/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (https://www.swig.org).
 * Version 4.2.0
 *
 * Do not make changes to this file unless you know what you are doing - modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

#define SWIGTYPESCRIPT


#define NAPI_VERSION 6  // For the generated C++ code

 // Generated by SWIG on branch im-711-20 Mon Oct  9 10:48:07 AM CEST 2023 


#define SWIG_VERSION 0x040200
#define SWIGJAVASCRIPT
/* -----------------------------------------------------------------------------
 *  This section contains generic SWIG labels for method/variable
 *  declarations/attributes, and other compiler dependent labels.
 * ----------------------------------------------------------------------------- */

/* template workaround for compilers that cannot correctly implement the C++ standard */
#ifndef SWIGTEMPLATEDISAMBIGUATOR
# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
#  define SWIGTEMPLATEDISAMBIGUATOR template
# elif defined(__HP_aCC)
/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
#  define SWIGTEMPLATEDISAMBIGUATOR template
# else
#  define SWIGTEMPLATEDISAMBIGUATOR
# endif
#endif

/* inline attribute */
#ifndef SWIGINLINE
# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
#   define SWIGINLINE inline
# else
#   define SWIGINLINE
# endif
#endif

/* attribute recognised by some compilers to avoid 'unused' warnings */
#ifndef SWIGUNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define SWIGUNUSED __attribute__ ((__unused__))
#   else
#     define SWIGUNUSED
#   endif
# elif defined(__ICC)
#   define SWIGUNUSED __attribute__ ((__unused__))
# else
#   define SWIGUNUSED
# endif
#endif

#ifndef SWIG_MSC_UNSUPPRESS_4505
# if defined(_MSC_VER)
#   pragma warning(disable : 4505) /* unreferenced local function has been removed */
# endif
#endif

#ifndef SWIGUNUSEDPARM
# ifdef __cplusplus
#   define SWIGUNUSEDPARM(p)
# else
#   define SWIGUNUSEDPARM(p) p SWIGUNUSED
# endif
#endif

/* internal SWIG method */
#ifndef SWIGINTERN
# define SWIGINTERN static SWIGUNUSED
#endif

/* internal inline SWIG method */
#ifndef SWIGINTERNINLINE
# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
#endif

/* exporting methods */
#if defined(__GNUC__)
#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
#    ifndef GCC_HASCLASSVISIBILITY
#      define GCC_HASCLASSVISIBILITY
#    endif
#  endif
#endif

#ifndef SWIGEXPORT
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   if defined(STATIC_LINKED)
#     define SWIGEXPORT
#   else
#     define SWIGEXPORT __declspec(dllexport)
#   endif
# else
#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
#     define SWIGEXPORT __attribute__ ((visibility("default")))
#   else
#     define SWIGEXPORT
#   endif
# endif
#endif

/* calling conventions for Windows */
#ifndef SWIGSTDCALL
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   define SWIGSTDCALL __stdcall
# else
#   define SWIGSTDCALL
# endif
#endif

/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
# define _CRT_SECURE_NO_DEPRECATE
#endif

/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
# define _SCL_SECURE_NO_DEPRECATE
#endif

/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */
#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES)
# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
#endif

/* Intel's compiler complains if a variable which was never initialised is
 * cast to void, which is a common idiom which we use to indicate that we
 * are aware a variable isn't used.  So we just silence that warning.
 * See: https://github.com/swig/swig/issues/192 for more discussion.
 */
#ifdef __INTEL_COMPILER
# pragma warning disable 592
#endif

#if __cplusplus >=201103L
# define SWIG_NULLPTR nullptr
#else
# define SWIG_NULLPTR NULL
#endif 


/* C99 and C++11 should provide snprintf, but define SWIG_NO_SNPRINTF
 * if you're missing it.
 */
#if ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) || \
     (defined __cplusplus && __cplusplus >= 201103L) || \
     defined SWIG_HAVE_SNPRINTF) && \
    !defined SWIG_NO_SNPRINTF
# define SWIG_snprintf(O,S,F,A) snprintf(O,S,F,A)
# define SWIG_snprintf2(O,S,F,A,B) snprintf(O,S,F,A,B)
#else
/* Fallback versions ignore the buffer size, but most of our uses either have a
 * fixed maximum possible size or dynamically allocate a buffer that's large
 * enough.
 */
# define SWIG_snprintf(O,S,F,A) sprintf(O,F,A)
# define SWIG_snprintf2(O,S,F,A,B) sprintf(O,F,A,B)
#endif



#define SWIG_FromCharPtrAndSize(cptr, size) SWIG_Env_FromCharPtrAndSize(env, cptr, size)
#define SWIG_FromCharPtr(cptr)              SWIG_Env_FromCharPtrAndSize(env, cptr, cptr ? strlen(cptr) : 0)


#define SWIG_NAPI_FROM_DECL_ARGS(arg1)              (Napi::Env env, arg1)
#define SWIG_NAPI_FROM_CALL_ARGS(arg1)              (env, arg1)



#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) 

#define SWIG_contract_assert(expr, msg) do { if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } } while (0) 



#if defined(_CPPUNWIND) || defined(__EXCEPTIONS)

#ifndef NAPI_CPP_EXCEPTIONS
#define NAPI_CPP_EXCEPTIONS
#endif

#else // defined(_CPPUNWIND) || defined(__EXCEPTIONS)

#ifndef NAPI_DISABLE_CPP_EXCEPTIONS
#define NAPI_DISABLE_CPP_EXCEPTIONS
#define NODE_ADDON_API_ENABLE_MAYBE
#endif

#endif // defined(_CPPUNWIND) || defined(__EXCEPTIONS)

// This gives us
// Branch Node.js v10.x - from v10.20.0
// Branch Node.js v12.x - from v12.17.0
// Everything from Node.js v14.0.0 on
// Our limiting feature is napi_set_instance_data
#ifndef NAPI_VERSION
#define NAPI_VERSION 6
#elif NAPI_VERSION < 6
#error NAPI_VERSION 6 is the minimum supported target (Node.js >=14, >=12.17, >=10.20)
#endif
#include <napi.h>
#include <uv.h>

#include <errno.h>
#include <limits.h>
#include <stdlib.h>
#include <assert.h>
#include <map>
#include <functional>
#include <algorithm>
#include <set>
#include <stdexcept>

/* -----------------------------------------------------------------------------
 * swigrun.swg
 *
 * This file contains generic C API SWIG runtime support for pointer
 * type checking.
 * ----------------------------------------------------------------------------- */

/* This should only be incremented when either the layout of swig_type_info changes,
   or for whatever reason, the runtime changes incompatibly */
#define SWIG_RUNTIME_VERSION "4"

/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
#ifdef SWIG_TYPE_TABLE
# define SWIG_QUOTE_STRING(x) #x
# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
#else
# define SWIG_TYPE_TABLE_NAME
#endif

/*
  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
  creating a static or dynamic library from the SWIG runtime code.
  In 99.9% of the cases, SWIG just needs to declare them as 'static'.

  But only do this if strictly necessary, ie, if you have problems
  with your compiler or suchlike.
*/

#ifndef SWIGRUNTIME
# define SWIGRUNTIME SWIGINTERN
#endif

#ifndef SWIGRUNTIMEINLINE
# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
#endif

/*  Generic buffer size */
#ifndef SWIG_BUFFER_SIZE
# define SWIG_BUFFER_SIZE 1024
#endif

/* Flags for pointer conversions */
#define SWIG_POINTER_DISOWN        0x1
#define SWIG_CAST_NEW_MEMORY       0x2
#define SWIG_POINTER_NO_NULL       0x4
#define SWIG_POINTER_CLEAR         0x8
#define SWIG_POINTER_RELEASE       (SWIG_POINTER_CLEAR | SWIG_POINTER_DISOWN)

/* Flags for new pointer objects */
#define SWIG_POINTER_OWN           0x1


/*
   Flags/methods for returning states.

   The SWIG conversion methods, as ConvertPtr, return an integer
   that tells if the conversion was successful or not. And if not,
   an error code can be returned (see swigerrors.swg for the codes).

   Use the following macros/flags to set or process the returning
   states.

   In old versions of SWIG, code such as the following was usually written:

     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
       // success code
     } else {
       //fail code
     }

   Now you can be more explicit:

    int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
    if (SWIG_IsOK(res)) {
      // success code
    } else {
      // fail code
    }

   which is the same really, but now you can also do

    Type *ptr;
    int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
    if (SWIG_IsOK(res)) {
      // success code
      if (SWIG_IsNewObj(res) {
        ...
	delete *ptr;
      } else {
        ...
      }
    } else {
      // fail code
    }

   I.e., now SWIG_ConvertPtr can return new objects and you can
   identify the case and take care of the deallocation. Of course that
   also requires SWIG_ConvertPtr to return new result values, such as

      int SWIG_ConvertPtr(obj, ptr,...) {
        if (<obj is ok>) {
          if (<need new object>) {
            *ptr = <ptr to new allocated object>;
            return SWIG_NEWOBJ;
          } else {
            *ptr = <ptr to old object>;
            return SWIG_OLDOBJ;
          }
        } else {
          return SWIG_BADOBJ;
        }
      }

   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
   more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
   SWIG errors code.

   Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
   allows returning the 'cast rank', for example, if you have this

       int food(double)
       int fooi(int);

   and you call

      food(1)   // cast rank '1'  (1 -> 1.0)
      fooi(1)   // cast rank '0'

   just use the SWIG_AddCast()/SWIG_CheckState()
*/

#define SWIG_OK                    (0)
/* Runtime errors are < 0 */
#define SWIG_ERROR                 (-1)
/* Errors in range -1 to -99 are in swigerrors.swg (errors for all languages including those not using the runtime) */
/* Errors in range -100 to -199 are language specific errors defined in *errors.swg */
/* Errors < -200 are generic runtime specific errors */
#define SWIG_ERROR_RELEASE_NOT_OWNED (-200)

#define SWIG_IsOK(r)               (r >= 0)
#define SWIG_ArgError(r)           ((r != SWIG_ERROR) ? r : SWIG_TypeError)

/* The CastRankLimit says how many bits are used for the cast rank */
#define SWIG_CASTRANKLIMIT         (1 << 8)
/* The NewMask denotes the object was created (using new/malloc) */
#define SWIG_NEWOBJMASK            (SWIG_CASTRANKLIMIT  << 1)
/* The TmpMask is for in/out typemaps that use temporary objects */
#define SWIG_TMPOBJMASK            (SWIG_NEWOBJMASK << 1)
/* Simple returning values */
#define SWIG_BADOBJ                (SWIG_ERROR)
#define SWIG_OLDOBJ                (SWIG_OK)
#define SWIG_NEWOBJ                (SWIG_OK | SWIG_NEWOBJMASK)
#define SWIG_TMPOBJ                (SWIG_OK | SWIG_TMPOBJMASK)
/* Check, add and del object mask methods */
#define SWIG_AddNewMask(r)         (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
#define SWIG_DelNewMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
#define SWIG_IsNewObj(r)           (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
#define SWIG_AddTmpMask(r)         (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
#define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
#define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))

/* Cast-Rank Mode */
#if defined(SWIG_CASTRANK_MODE)
#  ifndef SWIG_TypeRank
#    define SWIG_TypeRank             unsigned long
#  endif
#  ifndef SWIG_MAXCASTRANK            /* Default cast allowed */
#    define SWIG_MAXCASTRANK          (2)
#  endif
#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
#  define SWIG_CastRank(r)           (r & SWIG_CASTRANKMASK)
SWIGINTERNINLINE int SWIG_AddCast(int r) {
  return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
}
SWIGINTERNINLINE int SWIG_CheckState(int r) {
  return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
}
#else /* no cast-rank mode */
#  define SWIG_AddCast(r) (r)
#  define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
#endif


#include <string.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef void *(*swig_converter_func)(void *, int *);
typedef struct swig_type_info *(*swig_dycast_func)(void **);

/* Structure to store information on one type */
typedef struct swig_type_info {
  const char             *name;			/* mangled name of this type */
  const char             *str;			/* human readable name of this type */
  swig_dycast_func        dcast;		/* dynamic cast function down a hierarchy */
  struct swig_cast_info  *cast;			/* linked list of types that can cast into this type */
  void                   *clientdata;		/* language specific type data */
  int                    owndata;		/* flag if the structure owns the clientdata */
} swig_type_info;

/* Structure to store a type and conversion function used for casting */
typedef struct swig_cast_info {
  swig_type_info         *type;			/* pointer to type that is equivalent to this type */
  swig_converter_func     converter;		/* function to cast the void pointers */
  struct swig_cast_info  *next;			/* pointer to next cast in linked list */
  struct swig_cast_info  *prev;			/* pointer to the previous cast */
} swig_cast_info;

/* Structure used to store module information
 * Each module generates one structure like this, and the runtime collects
 * all of these structures and stores them in a circularly linked list.*/
typedef struct swig_module_info {
  swig_type_info         **types;		/* Array of pointers to swig_type_info structures that are in this module */
  size_t                 size;		        /* Number of types in this module */
  struct swig_module_info *next;		/* Pointer to next element in circularly linked list */
  swig_type_info         **type_initial;	/* Array of initially generated type structures */
  swig_cast_info         **cast_initial;	/* Array of initially generated casting structures */
  void                    *clientdata;		/* Language specific module data */
} swig_module_info;

/*
  Compare two type names skipping the space characters, therefore
  "char*" == "char *" and "Class<int>" == "Class<int >", etc.

  Return 0 when the two name types are equivalent, as in
  strncmp, but skipping ' '.
*/
SWIGRUNTIME int
SWIG_TypeNameComp(const char *f1, const char *l1,
		  const char *f2, const char *l2) {
  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
    while ((*f1 == ' ') && (f1 != l1)) ++f1;
    while ((*f2 == ' ') && (f2 != l2)) ++f2;
    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
  }
  return (int)((l1 - f1) - (l2 - f2));
}

/*
  Check type equivalence in a name list like <name1>|<name2>|...
  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
*/
SWIGRUNTIME int
SWIG_TypeCmp(const char *nb, const char *tb) {
  int equiv = 1;
  const char* te = tb + strlen(tb);
  const char* ne = nb;
  while (equiv != 0 && *ne) {
    for (nb = ne; *ne; ++ne) {
      if (*ne == '|') break;
    }
    equiv = SWIG_TypeNameComp(nb, ne, tb, te);
    if (*ne) ++ne;
  }
  return equiv;
}

/*
  Check type equivalence in a name list like <name1>|<name2>|...
  Return 0 if not equal, 1 if equal
*/
SWIGRUNTIME int
SWIG_TypeEquiv(const char *nb, const char *tb) {
  return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0;
}

/*
  Check the typename
*/
SWIGRUNTIME swig_cast_info *
SWIG_TypeCheck(const char *c, swig_type_info *ty) {
  if (ty) {
    swig_cast_info *iter = ty->cast;
    while (iter) {
      if (strcmp(iter->type->name, c) == 0) {
        if (iter == ty->cast)
          return iter;
        /* Move iter to the top of the linked list */
        iter->prev->next = iter->next;
        if (iter->next)
          iter->next->prev = iter->prev;
        iter->next = ty->cast;
        iter->prev = 0;
        if (ty->cast) ty->cast->prev = iter;
        ty->cast = iter;
        return iter;
      }
      iter = iter->next;
    }
  }
  return 0;
}

/*
  Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
*/
SWIGRUNTIME swig_cast_info *
SWIG_TypeCheckStruct(const swig_type_info *from, swig_type_info *ty) {
  if (ty) {
    swig_cast_info *iter = ty->cast;
    while (iter) {
      if (iter->type == from) {
        if (iter == ty->cast)
          return iter;
        /* Move iter to the top of the linked list */
        iter->prev->next = iter->next;
        if (iter->next)
          iter->next->prev = iter->prev;
        iter->next = ty->cast;
        iter->prev = 0;
        if (ty->cast) ty->cast->prev = iter;
        ty->cast = iter;
        return iter;
      }
      iter = iter->next;
    }
  }
  return 0;
}

/*
  Cast a pointer up an inheritance hierarchy
*/
SWIGRUNTIMEINLINE void *
SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
}

/*
   Dynamic pointer casting. Down an inheritance hierarchy
*/
SWIGRUNTIME swig_type_info *
SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
  swig_type_info *lastty = ty;
  if (!ty || !ty->dcast) return ty;
  while (ty && (ty->dcast)) {
    ty = (*ty->dcast)(ptr);
    if (ty) lastty = ty;
  }
  return lastty;
}

/*
  Return the name associated with this type
*/
SWIGRUNTIMEINLINE const char *
SWIG_TypeName(const swig_type_info *ty) {
  return ty->name;
}

/*
  Return the pretty name associated with this type,
  that is an unmangled type name in a form presentable to the user.
*/
SWIGRUNTIME const char *
SWIG_TypePrettyName(const swig_type_info *type) {
  /* The "str" field contains the equivalent pretty names of the
     type, separated by vertical-bar characters.  Choose the last
     name. It should be the most specific; a fully resolved name
     but not necessarily with default template parameters expanded. */
  if (!type) return NULL;
  if (type->str != NULL) {
    const char *last_name = type->str;
    const char *s;
    for (s = type->str; *s; s++)
      if (*s == '|') last_name = s+1;
    return last_name;
  }
  else
    return type->name;
}

/*
   Set the clientdata field for a type
*/
SWIGRUNTIME void
SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
  swig_cast_info *cast = ti->cast;
  /* if (ti->clientdata == clientdata) return; */
  ti->clientdata = clientdata;

  while (cast) {
    if (!cast->converter) {
      swig_type_info *tc = cast->type;
      if (!tc->clientdata) {
	SWIG_TypeClientData(tc, clientdata);
      }
    }
    cast = cast->next;
  }
}
SWIGRUNTIME void
SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
  SWIG_TypeClientData(ti, clientdata);
  ti->owndata = 1;
}

/*
  Search for a swig_type_info structure only by mangled name
  Search is a O(log #types)

  We start searching at module start, and finish searching when start == end.
  Note: if start == end at the beginning of the function, we go all the way around
  the circular list.
*/
SWIGRUNTIME swig_type_info *
SWIG_MangledTypeQueryModule(swig_module_info *start,
                            swig_module_info *end,
		            const char *name) {
  swig_module_info *iter = start;
  do {
    if (iter->size) {
      size_t l = 0;
      size_t r = iter->size - 1;
      do {
	/* since l+r >= 0, we can (>> 1) instead (/ 2) */
	size_t i = (l + r) >> 1;
	const char *iname = iter->types[i]->name;
	if (iname) {
	  int compare = strcmp(name, iname);
	  if (compare == 0) {
	    return iter->types[i];
	  } else if (compare < 0) {
	    if (i) {
	      r = i - 1;
	    } else {
	      break;
	    }
	  } else if (compare > 0) {
	    l = i + 1;
	  }
	} else {
	  break; /* should never happen */
	}
      } while (l <= r);
    }
    iter = iter->next;
  } while (iter != end);
  return 0;
}

/*
  Search for a swig_type_info structure for either a mangled name or a human readable name.
  It first searches the mangled names of the types, which is a O(log #types)
  If a type is not found it then searches the human readable names, which is O(#types).

  We start searching at module start, and finish searching when start == end.
  Note: if start == end at the beginning of the function, we go all the way around
  the circular list.
*/
SWIGRUNTIME swig_type_info *
SWIG_TypeQueryModule(swig_module_info *start,
                     swig_module_info *end,
		     const char *name) {
  /* STEP 1: Search the name field using binary search */
  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
  if (ret) {
    return ret;
  } else {
    /* STEP 2: If the type hasn't been found, do a complete search
       of the str field (the human readable name) */
    swig_module_info *iter = start;
    do {
      size_t i = 0;
      for (; i < iter->size; ++i) {
	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
	  return iter->types[i];
      }
      iter = iter->next;
    } while (iter != end);
  }

  /* neither found a match */
  return 0;
}

/*
   Pack binary data into a string
*/
SWIGRUNTIME char *
SWIG_PackData(char *c, void *ptr, size_t sz) {
  static const char hex[17] = "0123456789abcdef";
  const unsigned char *u = (unsigned char *) ptr;
  const unsigned char *eu =  u + sz;
  for (; u != eu; ++u) {
    unsigned char uu = *u;
    *(c++) = hex[(uu & 0xf0) >> 4];
    *(c++) = hex[uu & 0xf];
  }
  return c;
}

/*
   Unpack binary data from a string
*/
SWIGRUNTIME const char *
SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
  unsigned char *u = (unsigned char *) ptr;
  const unsigned char *eu = u + sz;
  for (; u != eu; ++u) {
    char d = *(c++);
    unsigned char uu;
    if ((d >= '0') && (d <= '9'))
      uu = (unsigned char)((d - '0') << 4);
    else if ((d >= 'a') && (d <= 'f'))
      uu = (unsigned char)((d - ('a'-10)) << 4);
    else
      return (char *) 0;
    d = *(c++);
    if ((d >= '0') && (d <= '9'))
      uu |= (unsigned char)(d - '0');
    else if ((d >= 'a') && (d <= 'f'))
      uu |= (unsigned char)(d - ('a'-10));
    else
      return (char *) 0;
    *u = uu;
  }
  return c;
}

/*
   Pack 'void *' into a string buffer.
*/
SWIGRUNTIME char *
SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
  char *r = buff;
  if ((2*sizeof(void *) + 2) > bsz) return 0;
  *(r++) = '_';
  r = SWIG_PackData(r,&ptr,sizeof(void *));
  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
  strcpy(r,name);
  return buff;
}

SWIGRUNTIME const char *
SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
  if (*c != '_') {
    if (strcmp(c,"NULL") == 0) {
      *ptr = (void *) 0;
      return name;
    } else {
      return 0;
    }
  }
  return SWIG_UnpackData(++c,ptr,sizeof(void *));
}

SWIGRUNTIME char *
SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
  char *r = buff;
  size_t lname = (name ? strlen(name) : 0);
  if ((2*sz + 2 + lname) > bsz) return 0;
  *(r++) = '_';
  r = SWIG_PackData(r,ptr,sz);
  if (lname) {
    strncpy(r,name,lname+1);
  } else {
    *r = 0;
  }
  return buff;
}

SWIGRUNTIME const char *
SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
  if (*c != '_') {
    if (strcmp(c,"NULL") == 0) {
      memset(ptr,0,sz);
      return name;
    } else {
      return 0;
    }
  }
  return SWIG_UnpackData(++c,ptr,sz);
}

#ifdef __cplusplus
}
#endif

/* SWIG Errors applicable to all language modules, values are reserved from -1 to -99 */
#define  SWIG_UnknownError    	   -1
#define  SWIG_IOError        	   -2
#define  SWIG_RuntimeError   	   -3
#define  SWIG_IndexError     	   -4
#define  SWIG_TypeError      	   -5
#define  SWIG_DivisionByZero 	   -6
#define  SWIG_OverflowError  	   -7
#define  SWIG_SyntaxError    	   -8
#define  SWIG_ValueError     	   -9
#define  SWIG_SystemError    	   -10
#define  SWIG_AttributeError 	   -11
#define  SWIG_MemoryError    	   -12
#define  SWIG_NullReferenceError   -13


/* ---------------------------------------------------------------------------
 * Error handling
 *
 * ---------------------------------------------------------------------------*/

/*
 * We support several forms:
 *
 * SWIG_Raise("Error message")
 * which creates an Error object with the error message
 *
 * SWIG_Raise(SWIG_TypeError, "Type error")
 * which creates the specified error type with the message
 *
 * SWIG_Raise(obj)
 * which throws the object itself
 *
 * SWIG_Raise(obj, "Exception const &", SWIGType_p_Exception)
 * which also throws the object itself and discards the unneeded extra type info
 *
 * These must be functions instead of macros to use the C++ overloading to
 * resolve the arguments
 */

SWIGINTERN Napi::Error SWIG_NAPI_NewError(Napi::Env env, int type, const char *msg) {
  switch(type) {
    default:
    case SWIG_IOError:
    case SWIG_MemoryError:
    case SWIG_SystemError:
    case SWIG_RuntimeError:
    case SWIG_DivisionByZero:
    case SWIG_SyntaxError:
      return Napi::Error::New(env, msg);
    case SWIG_OverflowError:
    case SWIG_IndexError:
      return Napi::RangeError::New(env, msg);
    case SWIG_ValueError:
    case SWIG_TypeError:
      return Napi::TypeError::New(env, msg);
  }
}

SWIGINTERN inline Napi::Error SWIG_NAPI_NewError(Napi::Env env, const char *msg) {
  return SWIG_NAPI_NewError(env, SWIG_RuntimeError, msg);
}

SWIGINTERN inline Napi::Error SWIG_NAPI_NewError(Napi::Env env, Napi::Value obj, const char *msg = SWIG_NULLPTR, swig_type_info *info = SWIG_NULLPTR) {
  return Napi::Error(env, obj);
}

#define SWIG_exception(code, msg)               SWIG_NAPI_Raise(env, code, msg)

// Used instead of SWIG_NAPI_Raise when rejecting a Promise
// in the main thread (during initialization/parsing)
#define SWIG_NAPI_Reject(env, code, msg)        do {                          \
      SWIG_NAPI_deferred.Reject(SWIG_NAPI_NewError(env, code, msg).Value());  \
      SWIG_NAPI_deferred_finalized = true;                                    \
      return Status::REJECT;                                                  \
    } while (0)

#define SWIG_NAPI_ASSERT_NOTNULL_ENV            assert((napi_env)env != SWIG_NULLPTR)

#ifdef NAPI_CPP_EXCEPTIONS

#define SWIG_Error(code, msg)                   SWIG_NAPI_Raise(env, code, msg)
#define NAPI_CHECK_MAYBE(maybe)                 (maybe)
#define NAPI_CHECK_RESULT(maybe, result)        (result = maybe)
#define SWIG_fail

SWIGINTERN void SWIG_NAPI_Raise(Napi::Env env, const char *msg) {
  SWIG_NAPI_ASSERT_NOTNULL_ENV;
  throw Napi::Error::New(env, msg);
}

SWIGINTERN void SWIG_NAPI_Raise(Napi::Env env, int type, const char *msg) {
  SWIG_NAPI_ASSERT_NOTNULL_ENV;
  switch(type) {
    default:
    case SWIG_IOError:
    case SWIG_MemoryError:
    case SWIG_SystemError:
    case SWIG_RuntimeError:
    case SWIG_DivisionByZero:
    case SWIG_SyntaxError:
      throw Napi::Error::New(env, msg);
    case SWIG_OverflowError:
    case SWIG_IndexError:
      throw Napi::RangeError::New(env, msg);
    case SWIG_ValueError:
    case SWIG_TypeError:
      throw Napi::TypeError::New(env, msg);
  }
}

SWIGINTERN void SWIG_NAPI_Raise(Napi::Env env, Napi::Value obj,
        const char *msg = SWIG_NULLPTR, swig_type_info *info = SWIG_NULLPTR) {
  SWIG_NAPI_ASSERT_NOTNULL_ENV;
  throw Napi::Error(env, obj);
}

#else // NAPI_CPP_EXCEPTIONS

#define SWIG_Error(code, msg)     do { SWIG_NAPI_Raise(env, code, msg); SWIG_fail; } while (0)
#define NAPI_CHECK_MAYBE(maybe)   do { if (maybe.IsNothing()) SWIG_fail; } while (0)
#define NAPI_CHECK_RESULT(maybe, result)          \
        do {                                      \
                auto r = maybe;                   \
                if (r.IsNothing()) SWIG_fail;     \
                result = r.Unwrap();              \
        } while (0)
#define SWIG_fail                 goto fail

SWIGINTERN inline void SWIG_NAPI_Raise(Napi::Env env, int type, const char *msg) {
  SWIG_NAPI_NewError(env, type, msg).ThrowAsJavaScriptException();
}

SWIGINTERN inline void SWIG_NAPI_Raise(Napi::Env env, const char *msg) {
  SWIG_NAPI_Raise(env, SWIG_RuntimeError, msg);
}

SWIGINTERN inline void SWIG_NAPI_Raise(Napi::Env env, Napi::Value obj,
        const char *msg = SWIG_NULLPTR, swig_type_info *info = SWIG_NULLPTR) {
  SWIG_NAPI_NewError(env, obj, msg, info).ThrowAsJavaScriptException();
}

#endif // NAPI_CPP_EXCEPTIONS

void JS_veto_set_variable(const Napi::CallbackInfo &info) {
  SWIG_NAPI_Raise(info.Env(), "Tried to write read-only variable.");
}

/* ---------------------------------------------------------------------------
 * Module data per V8 isolate
 * ---------------------------------------------------------------------------*/

struct EnvInstanceData {
  Napi::Env env;
  // Base class per-environment constructor, used to check
  // if a JS object is a SWIG wrapper
  Napi::FunctionReference *SWIG_NAPI_ObjectWrapCtor;
  // Per-environment wrapper constructors, indexed by the number in
  // swig_type->clientdata
  Napi::FunctionReference **ctor;
  swig_module_info *swig_module;
  EnvInstanceData(Napi::Env, swig_module_info *);
  ~EnvInstanceData();
};

typedef size_t SWIG_NAPI_ClientData;

// A lock is a pair of two lambdas for locking and unlocking
typedef std::function<void()> SWIG_Async_Lock_Func;
typedef std::pair<SWIG_Async_Lock_Func, SWIG_Async_Lock_Func> SWIG_Lock;
// An ordered list of locks
typedef std::map<void *, SWIG_Lock> SWIG_Locks_List;

// RAII guard, uses a reference to an allocated lock list
class SWIG_Guard {
private:
  SWIG_Locks_List &list;
  bool locked;
public:
  SWIG_Guard(SWIG_Locks_List &_list) : list(_list), locked(false) {}
  virtual ~SWIG_Guard() {
    if (locked) {
      for (auto const &lock : list) {
        lock.second.second();
      }
    }
  }
  void lock() {
    for (auto const &lock : list) {
      lock.second.first();
    }
    locked = true;
  }
};

/* ---------------------------------------------------------------------------
 * Base class for all wrapped objects,
 * used directly when unwrapping unknown objects
 * ---------------------------------------------------------------------------*/
template <typename SWIG_OBJ_WRAP>
class SWIG_NAPI_ObjectWrap_templ : public Napi::ObjectWrap<SWIG_OBJ_WRAP> {
  public:
    void *self;
    bool owned;
    size_t size;
    swig_type_info *info;
    SWIG_NAPI_ObjectWrap_templ(const Napi::CallbackInfo &info);
    SWIG_NAPI_ObjectWrap_templ(bool, const Napi::CallbackInfo &info) :
        Napi::ObjectWrap<SWIG_OBJ_WRAP>(info),
        self(SWIG_NULLPTR),
        owned(true),
        size(0),
        info(SWIG_NULLPTR) {
      uv_mutex_init(&_lock);
    }
    virtual ~SWIG_NAPI_ObjectWrap_templ() {};

    static void JS_veto_set_static_variable(const Napi::CallbackInfo &, const Napi::Value &);
    void JS_veto_set_variable(const Napi::CallbackInfo &, const Napi::Value &);

    inline void lock() { uv_mutex_lock(&_lock); };
    inline void unlock() { uv_mutex_unlock(&_lock); };

    Napi::Value ToString(const Napi::CallbackInfo &info);

  private:
    // Every wrapped object has an associated async lock
    uv_mutex_t _lock;
};

template <typename SWIG_OBJ_WRAP>
SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>::SWIG_NAPI_ObjectWrap_templ(const Napi::CallbackInfo &info) :
        Napi::ObjectWrap<SWIG_OBJ_WRAP>(info), size(0), info(SWIG_NULLPTR) { 
  uv_mutex_init(&_lock);
  Napi::Env env = info.Env();
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object of unknown type in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
  } else {
    SWIG_Error(SWIG_ERROR, "This constructor is not accessible from JS");
  }
  return;
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

template <typename SWIG_OBJ_WRAP>
Napi::Value SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>::ToString(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  static char repr[128];
  const char *name = SWIG_TypePrettyName(this->info);
  snprintf(repr, sizeof(repr), "{SwigObject %s (%s) at %p %s}",
    this->info ? this->info->name : "unknown",
    name ? name : "unknown",
    this->self,
    this->owned ? "[owned]" : "[copy]");
  return Napi::String::New(env, repr);
}

template <typename SWIG_OBJ_WRAP>
void SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>::JS_veto_set_static_variable(const Napi::CallbackInfo &info, const Napi::Value &value) {
  SWIG_NAPI_Raise(info.Env(), "Tried to write read-only variable.");
}

template <typename SWIG_OBJ_WRAP>
void SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>::JS_veto_set_variable(const Napi::CallbackInfo &info, const Napi::Value &value) {
  SWIG_NAPI_Raise(info.Env(), "Tried to write read-only variable.");
}

class SWIG_NAPI_ObjectWrap_inst : public SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst> {
public:
  using SWIG_NAPI_ObjectWrap_templ::SWIG_NAPI_ObjectWrap_templ;
  static Napi::Function GetClass(Napi::Env);
  static void GetMembers(
    Napi::Env,
    std::map<std::string, SWIG_NAPI_ObjectWrap_templ::PropertyDescriptor> &,
    std::map<std::string, SWIG_NAPI_ObjectWrap_templ::PropertyDescriptor> &
  );
};

void SWIG_NAPI_ObjectWrap_inst::GetMembers(
        Napi::Env env,
        std::map<std::string, SWIG_NAPI_ObjectWrap_templ::PropertyDescriptor> &members,
        std::map<std::string, SWIG_NAPI_ObjectWrap_templ::PropertyDescriptor> &
) {
  members.erase("toString");
  members.insert({"toString", SWIG_NAPI_ObjectWrap_templ::InstanceMethod("toString", &SWIG_NAPI_ObjectWrap_templ::ToString)});
}

Napi::Function SWIG_NAPI_ObjectWrap_inst::GetClass(Napi::Env env) {
  return Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::DefineClass(env, "SwigObject", {});
}

bool SWIG_NAPI_IsWrappedObject(Napi::Env env, Napi::Object v) {
  SWIG_NAPI_ASSERT_NOTNULL_ENV;
  // Check if this is a SWIG wrapper
  Napi::FunctionReference *ctor = env.GetInstanceData<EnvInstanceData>()->SWIG_NAPI_ObjectWrapCtor;
  bool instanceOf;
  NAPI_CHECK_RESULT(v.InstanceOf(ctor->Value()), instanceOf);
  return instanceOf;
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return false;
#endif
}

SWIGRUNTIME int SWIG_NAPI_ConvertInstancePtr(Napi::Object objRef, void **ptr, swig_type_info *info, int flags) {
  SWIG_NAPI_ObjectWrap_inst *ow;
  Napi::Env env = objRef.Env();
  if(!objRef.IsObject()) return SWIG_ERROR;

  if (!SWIG_NAPI_IsWrappedObject(env, objRef)) {
    return SWIG_TypeError;
  }

  ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(objRef);

  // Now check if the SWIG type is compatible unless the types match exactly or the type is unknown
  if(info && ow->info != info && ow->info != SWIG_NULLPTR) {
    swig_cast_info *tc = SWIG_TypeCheckStruct(ow->info, info);
    if (!tc && ow->info->name) {
      tc = SWIG_TypeCheck(ow->info->name, info);
    }
    bool type_valid = tc != 0;
    if(!type_valid) {
      return SWIG_TypeError;
    }
    int newmemory = 0;
    *ptr = SWIG_TypeCast(tc, ow->self, &newmemory);
    assert(!newmemory); /* newmemory handling not yet implemented */
  } else {
    *ptr = ow->self;
  }

  if (((flags & SWIG_POINTER_RELEASE) == SWIG_POINTER_RELEASE) && !ow->owned) {
    return SWIG_ERROR_RELEASE_NOT_OWNED;
  } else {
    if (flags & SWIG_POINTER_DISOWN) {
      ow->owned = false;
    }
    if (flags & SWIG_POINTER_CLEAR) {
      ow->self = SWIG_NULLPTR;
    }
  }
  return SWIG_OK;
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return SWIG_ERROR;
#endif
}


SWIGRUNTIME int SWIG_NAPI_GetInstancePtr(Napi::Value valRef, void **ptr) {
  SWIG_NAPI_ObjectWrap_inst *ow;
  if(!valRef.IsObject()) {
    return SWIG_TypeError;
  }
  Napi::Object objRef;
  NAPI_CHECK_RESULT(valRef.ToObject(), objRef);
  ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(objRef);

  if(ow->self == SWIG_NULLPTR) {
    return SWIG_ERROR;
  }

  *ptr = ow->self;
  return SWIG_OK;
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return SWIG_ERROR;
#endif
}


SWIGRUNTIME int SWIG_NAPI_ConvertPtr(Napi::Value valRef, void **ptr, swig_type_info *info, int flags) {
  // special case: JavaScript null => C NULL pointer
  if (valRef.IsNull()) {
    *ptr=0;
    return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
  }

  if (!valRef.IsObject()) {
    return SWIG_TypeError;
  }

  Napi::Object objRef;
  NAPI_CHECK_RESULT(valRef.ToObject(), objRef);
  return SWIG_NAPI_ConvertInstancePtr(objRef, ptr, info, flags);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return SWIG_ERROR;
#endif
}

SWIGRUNTIME Napi::Value SWIG_NAPI_NewPointerObj(Napi::Env env, void *ptr, swig_type_info *info, int flags) {
  SWIG_NAPI_ASSERT_NOTNULL_ENV;
  Napi::External<void> native;
  Napi::FunctionReference *ctor;

  if (ptr == SWIG_NULLPTR) {
    return env.Null();
  }
  native = Napi::External<void>::New(env, ptr);

  size_t *idx = info != SWIG_NULLPTR ?
        reinterpret_cast<SWIG_NAPI_ClientData *>(info->clientdata) :
        SWIG_NULLPTR;
  if (idx == SWIG_NULLPTR) {
    // This type does not have a dedicated wrapper
    ctor = env.GetInstanceData<EnvInstanceData>()->SWIG_NAPI_ObjectWrapCtor;
  } else {
    ctor = env.GetInstanceData<EnvInstanceData>()->ctor[*idx];
  }

  Napi::Value wrapped;
  NAPI_CHECK_RESULT(ctor->New({native}), wrapped);

  // Preserve the type even if using the generic wrapper
  if (idx == SWIG_NULLPTR && info != SWIG_NULLPTR) {
    Napi::Object obj;
    NAPI_CHECK_RESULT(wrapped.ToObject(), obj);
    Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj)->info = info;
  }

  if ((flags & SWIG_POINTER_OWN) == SWIG_POINTER_OWN) {
    Napi::Object obj;
    NAPI_CHECK_RESULT(wrapped.ToObject(), obj);
    Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj)->owned = true;
  }

  return wrapped;
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return Napi::Value();
#endif
}

#define SWIG_ConvertPtr(obj, ptr, info, flags)          SWIG_NAPI_ConvertPtr(obj, ptr, info, flags)
#define SWIG_NewPointerObj(ptr, info, flags)            SWIG_NAPI_NewPointerObj(env, ptr, info, flags)

#define SWIG_ConvertInstance(obj, pptr, type, flags)    SWIG_NAPI_ConvertInstancePtr(obj, pptr, type, flags)
#define SWIG_NewInstanceObj(thisvalue, type, flags)     SWIG_NAPI_NewPointerObj(env, thisvalue, type, flags)

#define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_NAPI_ConvertPtr(obj, pptr, type, 0)
#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_NAPI_NewPointerObj(env, ptr, type, 0)

#define SWIG_GetInstancePtr(obj, ptr)                   SWIG_NAPI_GetInstancePtr(obj, ptr)

SWIGRUNTIME Napi::Value _SWIG_NAPI_wrap_equals(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  void *arg1 = (void *) 0 ;
  void *arg2 = (void *) 0 ;
  bool result;
  int res1;
  int res2;

  if(info.Length() != 1) SWIG_Error(SWIG_ERROR, "Illegal number of arguments for equals.");

  res1 = SWIG_GetInstancePtr(info.This(), &arg1);
  if (!SWIG_IsOK(res1)) {
    SWIG_Error(SWIG_ERROR, "Could not get pointer from 'this' object for equals.");
  }
  res2 = SWIG_GetInstancePtr(info[0], &arg2);
  if (!SWIG_IsOK(res2)) {
    SWIG_Error(SWIG_ArgError(res2), " in method '" "equals" "', argument " "1"" of type '" "void *""'");
  }

  result = (bool)(arg1 == arg2);
  jsresult = Napi::Boolean::New(env, result);

  return jsresult;
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return Napi::Value();
#endif
}

SWIGRUNTIME Napi::Value _wrap_getCPtr(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  void *arg1 = (void *) 0 ;
  long result;
  int res1;

  res1 = SWIG_GetInstancePtr(info.This(), &arg1);
  if (!SWIG_IsOK(res1)) {
    SWIG_Error(SWIG_ArgError(res1), " in method '" "getCPtr" "', argument " "1"" of type '" "void *""'");
  }

  result = (long)arg1;
  jsresult = Napi::Number::New(env, result);

  return jsresult;
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return Napi::Value();
#endif
}

/* ---------------------------------------------------------------------------
 * Async execution
 * ---------------------------------------------------------------------------*/

// This class is essentially a functor with multiple entry points
// Its main purpose is to keep the context - the wrapper local variables -
// as class members between those calls in different threads
// Init() is called on the main thread with V8 access and deals with in typemaps
// Execute() is called on a worker thread without V8 access and does the work
// OnOK()/Cleanup() are called on the main thread with V8 access and deal with
//   the out typemaps
class SWIG_NAPI_AsyncContext {
protected:
  Napi::Env env;
  Napi::Promise::Deferred SWIG_NAPI_deferred;
  bool SWIG_NAPI_deferred_finalized;
public:
  enum Status { OK, REJECT, THROW };
  SWIG_NAPI_AsyncContext(
    Napi::Env _env
  ) : 
    env(_env),
    SWIG_NAPI_deferred(Napi::Promise::Deferred(_env)),
    SWIG_NAPI_deferred_finalized(false) {}
  virtual ~SWIG_NAPI_AsyncContext() {
    if (!SWIG_NAPI_deferred_finalized) {
      // This fixes a very vicious leak
      // Once a Deferred has been created, it won't be destroyed
      // unless it is resolved or rejected - its destructor is a no-op
      // This code is triggered when synchronously throwing while parsing the args
      SWIG_NAPI_deferred.Resolve(env.Undefined());
      SWIG_NAPI_deferred_finalized = true;
    }
  }
  // All methods are prefixed to avoid symbol pollution
  // Alternatively, inheriting through a template
  // allows to not import any member definitions from the base class
  // https://stackoverflow.com/questions/76703197/unshadow-global-identifier-in-a-class
  virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &) = 0;
  virtual void SWIG_NAPI_Execute() = 0;
  virtual void SWIG_NAPI_Resolve() = 0;
  virtual bool SWIG_NAPI_Cleanup() = 0;
#ifdef NAPI_CPP_EXCEPTIONS
  virtual void SWIG_NAPI_Fail(const Napi::Error &);
  virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &) = 0;
#endif
  inline Napi::Promise SWIG_NAPI_Promise() { return SWIG_NAPI_deferred.Promise(); }
};

#ifdef NAPI_CPP_EXCEPTIONS
void SWIG_NAPI_AsyncContext::SWIG_NAPI_Fail(const Napi::Error &error) {
  if (!SWIG_NAPI_Cleanup()) goto fail;
  SWIG_NAPI_deferred_finalized = true;
  SWIG_NAPI_deferred.Reject(error.Value());
  goto fail;
fail:
  return;
}
#endif

// This is the async worker, this class deletes itself (NAPI does this)
// as well as its context when the async operation completes
class SWIG_NAPI_AsyncWorker : public Napi::AsyncWorker {
  SWIG_NAPI_AsyncContext *context;
  // This vector holds persistent references to all JS objects
  // involved in the asynchronous operation - it protects them
  // from being garbage-collected
  std::vector<Napi::ObjectReference *> persistent;
  std::exception_ptr saved_exception;

public:
  SWIG_NAPI_AsyncWorker(
      Napi::Env _env,
      const char *name,
      SWIG_NAPI_AsyncContext *_context) :
    Napi::AsyncWorker(_env, name),
    context(_context),
    persistent(),
    saved_exception(nullptr) {}

  virtual ~SWIG_NAPI_AsyncWorker() {
    // Release the persistent references
    for (Napi::ObjectReference *ref : persistent) {
      delete ref;
    }
    persistent.clear();
  }

  virtual void OnOK() override {
    Napi::Env env(Env());
    Napi::HandleScope scope(env);
#ifdef NAPI_CPP_EXCEPTIONS
    try {
      context->SWIG_NAPI_Rethrow(saved_exception);
    } catch (Napi::Error &error) {
      context->SWIG_NAPI_Fail(error);
      delete context;
      return;
    } catch (std::exception &ex) {
      Napi::Error error = Napi::Error::New(env, ex.what());
      context->SWIG_NAPI_Fail(error);
      delete context;
      return;
    }
#endif
    context->SWIG_NAPI_Resolve();
    delete context;
  }

  virtual void OnError(const Napi::Error &error) override {
    // This should never happen, we catch all errors now
    abort();
  }

  virtual void Execute() override {
#ifdef NAPI_CPP_EXCEPTIONS
    try {
      context->SWIG_NAPI_Execute();
    } catch (...) {
      saved_exception = std::current_exception();
    }
#else
    context->SWIG_NAPI_Execute();
#endif
  }

  inline void Persist(const Napi::Value &v) {
    if (v.IsObject()) {
      Napi::Object obj;
      NAPI_CHECK_RESULT(v.ToObject(), obj);
      Napi::ObjectReference *ref = new Napi::ObjectReference();
      *ref = Napi::Persistent(obj);
      persistent.push_back(ref);
    }
    return;
#ifndef NAPI_CPP_EXCEPTIONS
    goto fail;
  fail:
    return;
#endif
  }

  Napi::Value Run(const Napi::CallbackInfo &info) {
    SWIG_NAPI_AsyncContext::Status rc;

#ifdef NAPI_CPP_EXCEPTIONS
    try {
      rc = context->SWIG_NAPI_Init(info);
    } catch (...) {
      delete context;
      delete this;
      throw;
    }
#else
    rc = context->SWIG_NAPI_Init(info);
#endif
    if (rc == SWIG_NAPI_AsyncContext::Status::REJECT) {
      Napi::EscapableHandleScope scope(info.Env());
      Napi::Value r = context->SWIG_NAPI_Promise();
      context->SWIG_NAPI_Cleanup();
      delete context;
      delete this;
      return scope.Escape(r);
    } else if (rc == SWIG_NAPI_AsyncContext::Status::THROW) {
      context->SWIG_NAPI_Cleanup();
      delete context;
      delete this;
      return Napi::Value();
    }

    Persist(info.This());
    for (size_t i = 0; i < info.Length(); i++) Persist(info[i]);
    Queue();
    return context->SWIG_NAPI_Promise();
  }
};

/* ---------------------------------------------------------------------------
 * PackedData object
 * (objects visible to JS that do not have a dedicated wrapper but must preserve type)
 * ---------------------------------------------------------------------------*/

SWIGRUNTIME
Napi::Value SWIG_NAPI_NewPackedObj(Napi::Env env, void *data, size_t size, swig_type_info *type) {
  void *data_copy = new uint8_t[size];
  memcpy(data_copy, data, size);
  Napi::Value val = SWIG_NAPI_NewPointerObj(env, data_copy, type, SWIG_POINTER_OWN);
  Napi::Object obj;
  if (val.IsEmpty()) goto fail;

  NAPI_CHECK_RESULT(val.ToObject(), obj);
  Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj)->size = size;

fail:
  return val;
}

SWIGRUNTIME
int SWIG_NAPI_ConvertPacked(Napi::Value valRef, void *ptr, size_t size, swig_type_info *type) {
  void *tmp;
  if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(valRef, &tmp, type, 0))) {
    return SWIG_ERROR;
  }
  memcpy(ptr, tmp, size);
  return SWIG_OK;
}

#define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_NAPI_ConvertPacked(obj, ptr, sz, ty)
#define SWIG_NewMemberObj(ptr, sz, type)                SWIG_NAPI_NewPackedObj(env, ptr, sz, type)


/* ---------------------------------------------------------------------------
 * Support for IN/OUTPUT typemaps (see Lib/typemaps/inoutlist.swg)
 *
 * ---------------------------------------------------------------------------*/

SWIGRUNTIME
Napi::Value SWIG_NAPI_AppendOutput(Napi::Env env, Napi::Value result, Napi::Value obj) {
  if (result.IsUndefined()) {
    result = Napi::Array::New(env);
  } else if (!result.IsArray()) {
    Napi::Array tmparr = Napi::Array::New(env);
    tmparr.Set(static_cast<uint32_t>(0), result);
    result = tmparr;
  }

  Napi::Array arr = result.As<Napi::Array>();
  arr.Set(arr.Length(), obj);
  return arr;
}


/* -------- TYPES TABLE (BEGIN) -------- */

#define SWIGTYPE_p_FILE swig_types[0]
#define SWIGTYPE_p_ImageListContainer swig_types[1]
#define SWIGTYPE_p_ImageListIterator swig_types[2]
#define SWIGTYPE_p_MagickCore__AlignType swig_types[3]
#define SWIGTYPE_p_MagickCore__CacheType swig_types[4]
#define SWIGTYPE_p_MagickCore__ChannelType swig_types[5]
#define SWIGTYPE_p_MagickCore__ClassType swig_types[6]
#define SWIGTYPE_p_MagickCore__ColorspaceType swig_types[7]
#define SWIGTYPE_p_MagickCore__ComplexOperator swig_types[8]
#define SWIGTYPE_p_MagickCore__ComplianceType swig_types[9]
#define SWIGTYPE_p_MagickCore__CompositeOperator swig_types[10]
#define SWIGTYPE_p_MagickCore__CompressionType swig_types[11]
#define SWIGTYPE_p_MagickCore__DecorationType swig_types[12]
#define SWIGTYPE_p_MagickCore__DirectionType swig_types[13]
#define SWIGTYPE_p_MagickCore__DisposeType swig_types[14]
#define SWIGTYPE_p_MagickCore__EndianType swig_types[15]
#define SWIGTYPE_p_MagickCore__ExceptionType swig_types[16]
#define SWIGTYPE_p_MagickCore__FilterType swig_types[17]
#define SWIGTYPE_p_MagickCore__GradientType swig_types[18]
#define SWIGTYPE_p_MagickCore__GravityType swig_types[19]
#define SWIGTYPE_p_MagickCore__IlluminantType swig_types[20]
#define SWIGTYPE_p_MagickCore__ImageType swig_types[21]
#define SWIGTYPE_p_MagickCore__InterlaceType swig_types[22]
#define SWIGTYPE_p_MagickCore__KernelInfoType swig_types[23]
#define SWIGTYPE_p_MagickCore__LogEventType swig_types[24]
#define SWIGTYPE_p_MagickCore__MagickBooleanType swig_types[25]
#define SWIGTYPE_p_MagickCore__MagickCLDeviceType swig_types[26]
#define SWIGTYPE_p_MagickCore__MagickEvaluateOperator swig_types[27]
#define SWIGTYPE_p_MagickCore__MagickFormatType swig_types[28]
#define SWIGTYPE_p_MagickCore__MagickModuleType swig_types[29]
#define SWIGTYPE_p_MagickCore__MetricType swig_types[30]
#define SWIGTYPE_p_MagickCore__NoiseType swig_types[31]
#define SWIGTYPE_p_MagickCore__OrientationType swig_types[32]
#define SWIGTYPE_p_MagickCore__PathType swig_types[33]
#define SWIGTYPE_p_MagickCore__PolicyDomain swig_types[34]
#define SWIGTYPE_p_MagickCore__PolicyRights swig_types[35]
#define SWIGTYPE_p_MagickCore__PreviewType swig_types[36]
#define SWIGTYPE_p_MagickCore__PrimitiveType swig_types[37]
#define SWIGTYPE_p_MagickCore__QuantumAlphaType swig_types[38]
#define SWIGTYPE_p_MagickCore__QuantumFormatType swig_types[39]
#define SWIGTYPE_p_MagickCore__QuantumType swig_types[40]
#define SWIGTYPE_p_MagickCore__ReferenceType swig_types[41]
#define SWIGTYPE_p_MagickCore__RegistryType swig_types[42]
#define SWIGTYPE_p_MagickCore__ResolutionType swig_types[43]
#define SWIGTYPE_p_MagickCore__ResourceType swig_types[44]
#define SWIGTYPE_p_MagickCore__StatisticType swig_types[45]
#define SWIGTYPE_p_MagickCore__StorageType swig_types[46]
#define SWIGTYPE_p_MagickCore__StretchType swig_types[47]
#define SWIGTYPE_p_MagickCore__StyleType swig_types[48]
#define SWIGTYPE_p_MagickCore__TransmitType swig_types[49]
#define SWIGTYPE_p_MagickCore__ValidateType swig_types[50]
#define SWIGTYPE_p_MagickCore__WordBreakType swig_types[51]
#define SWIGTYPE_p_MagickCore___ChannelMoments swig_types[52]
#define SWIGTYPE_p_MagickCore___ChannelPerceptualHash swig_types[53]
#define SWIGTYPE_p_MagickCore___ChannelStatistics swig_types[54]
#define SWIGTYPE_p_MagickCore___ExceptionInfo swig_types[55]
#define SWIGTYPE_p_MagickCore___Image swig_types[56]
#define SWIGTYPE_p_MagickCore___ImageInfo swig_types[57]
#define SWIGTYPE_p_MagickCore___MontageInfo swig_types[58]
#define SWIGTYPE_p_MagickCore___QuantizeInfo swig_types[59]
#define SWIGTYPE_p_MagickCore___RectangleInfo swig_types[60]
#define SWIGTYPE_p_MagickWand swig_types[61]
#define SWIGTYPE_p_Magick__Blob swig_types[62]
#define SWIGTYPE_p_Magick__ChannelMoments swig_types[63]
#define SWIGTYPE_p_Magick__ChannelPerceptualHash swig_types[64]
#define SWIGTYPE_p_Magick__ChannelStatistics swig_types[65]
#define SWIGTYPE_p_Magick__CoderInfo swig_types[66]
#define SWIGTYPE_p_Magick__Color swig_types[67]
#define SWIGTYPE_p_Magick__ColorCMYK swig_types[68]
#define SWIGTYPE_p_Magick__ColorGray swig_types[69]
#define SWIGTYPE_p_Magick__ColorHSL swig_types[70]
#define SWIGTYPE_p_Magick__ColorMono swig_types[71]
#define SWIGTYPE_p_Magick__ColorRGB swig_types[72]
#define SWIGTYPE_p_Magick__ColorYUV swig_types[73]
#define SWIGTYPE_p_Magick__Coordinate swig_types[74]
#define SWIGTYPE_p_Magick__Drawable swig_types[75]
#define SWIGTYPE_p_Magick__DrawableAffine swig_types[76]
#define SWIGTYPE_p_Magick__DrawableAlpha swig_types[77]
#define SWIGTYPE_p_Magick__DrawableArc swig_types[78]
#define SWIGTYPE_p_Magick__DrawableBase swig_types[79]
#define SWIGTYPE_p_Magick__DrawableBezier swig_types[80]
#define SWIGTYPE_p_Magick__DrawableBorderColor swig_types[81]
#define SWIGTYPE_p_Magick__DrawableCircle swig_types[82]
#define SWIGTYPE_p_Magick__DrawableClipPath swig_types[83]
#define SWIGTYPE_p_Magick__DrawableClipRule swig_types[84]
#define SWIGTYPE_p_Magick__DrawableClipUnits swig_types[85]
#define SWIGTYPE_p_Magick__DrawableColor swig_types[86]
#define SWIGTYPE_p_Magick__DrawableCompositeImage swig_types[87]
#define SWIGTYPE_p_Magick__DrawableDensity swig_types[88]
#define SWIGTYPE_p_Magick__DrawableEllipse swig_types[89]
#define SWIGTYPE_p_Magick__DrawableFillColor swig_types[90]
#define SWIGTYPE_p_Magick__DrawableFillOpacity swig_types[91]
#define SWIGTYPE_p_Magick__DrawableFillPatternUrl swig_types[92]
#define SWIGTYPE_p_Magick__DrawableFillRule swig_types[93]
#define SWIGTYPE_p_Magick__DrawableFont swig_types[94]
#define SWIGTYPE_p_Magick__DrawableGravity swig_types[95]
#define SWIGTYPE_p_Magick__DrawableLine swig_types[96]
#define SWIGTYPE_p_Magick__DrawableMiterLimit swig_types[97]
#define SWIGTYPE_p_Magick__DrawablePath swig_types[98]
#define SWIGTYPE_p_Magick__DrawablePoint swig_types[99]
#define SWIGTYPE_p_Magick__DrawablePointSize swig_types[100]
#define SWIGTYPE_p_Magick__DrawablePolygon swig_types[101]
#define SWIGTYPE_p_Magick__DrawablePolyline swig_types[102]
#define SWIGTYPE_p_Magick__DrawablePopClipPath swig_types[103]
#define SWIGTYPE_p_Magick__DrawablePopGraphicContext swig_types[104]
#define SWIGTYPE_p_Magick__DrawablePopPattern swig_types[105]
#define SWIGTYPE_p_Magick__DrawablePushClipPath swig_types[106]
#define SWIGTYPE_p_Magick__DrawablePushGraphicContext swig_types[107]
#define SWIGTYPE_p_Magick__DrawablePushPattern swig_types[108]
#define SWIGTYPE_p_Magick__DrawableRectangle swig_types[109]
#define SWIGTYPE_p_Magick__DrawableRotation swig_types[110]
#define SWIGTYPE_p_Magick__DrawableRoundRectangle swig_types[111]
#define SWIGTYPE_p_Magick__DrawableScaling swig_types[112]
#define SWIGTYPE_p_Magick__DrawableSkewX swig_types[113]
#define SWIGTYPE_p_Magick__DrawableSkewY swig_types[114]
#define SWIGTYPE_p_Magick__DrawableStrokeAntialias swig_types[115]
#define SWIGTYPE_p_Magick__DrawableStrokeColor swig_types[116]
#define SWIGTYPE_p_Magick__DrawableStrokeDashArray swig_types[117]
#define SWIGTYPE_p_Magick__DrawableStrokeDashOffset swig_types[118]
#define SWIGTYPE_p_Magick__DrawableStrokeLineCap swig_types[119]
#define SWIGTYPE_p_Magick__DrawableStrokeLineJoin swig_types[120]
#define SWIGTYPE_p_Magick__DrawableStrokeOpacity swig_types[121]
#define SWIGTYPE_p_Magick__DrawableStrokePatternUrl swig_types[122]
#define SWIGTYPE_p_Magick__DrawableStrokeWidth swig_types[123]
#define SWIGTYPE_p_Magick__DrawableText swig_types[124]
#define SWIGTYPE_p_Magick__DrawableTextAlignment swig_types[125]
#define SWIGTYPE_p_Magick__DrawableTextAntialias swig_types[126]
#define SWIGTYPE_p_Magick__DrawableTextDecoration swig_types[127]
#define SWIGTYPE_p_Magick__DrawableTextDirection swig_types[128]
#define SWIGTYPE_p_Magick__DrawableTextInterlineSpacing swig_types[129]
#define SWIGTYPE_p_Magick__DrawableTextInterwordSpacing swig_types[130]
#define SWIGTYPE_p_Magick__DrawableTextKerning swig_types[131]
#define SWIGTYPE_p_Magick__DrawableTextUnderColor swig_types[132]
#define SWIGTYPE_p_Magick__DrawableTranslation swig_types[133]
#define SWIGTYPE_p_Magick__DrawableViewbox swig_types[134]
#define SWIGTYPE_p_Magick__Error swig_types[135]
#define SWIGTYPE_p_Magick__ErrorBlob swig_types[136]
#define SWIGTYPE_p_Magick__ErrorCache swig_types[137]
#define SWIGTYPE_p_Magick__ErrorCoder swig_types[138]
#define SWIGTYPE_p_Magick__ErrorConfigure swig_types[139]
#define SWIGTYPE_p_Magick__ErrorCorruptImage swig_types[140]
#define SWIGTYPE_p_Magick__ErrorDelegate swig_types[141]
#define SWIGTYPE_p_Magick__ErrorDraw swig_types[142]
#define SWIGTYPE_p_Magick__ErrorFileOpen swig_types[143]
#define SWIGTYPE_p_Magick__ErrorImage swig_types[144]
#define SWIGTYPE_p_Magick__ErrorMissingDelegate swig_types[145]
#define SWIGTYPE_p_Magick__ErrorModule swig_types[146]
#define SWIGTYPE_p_Magick__ErrorMonitor swig_types[147]
#define SWIGTYPE_p_Magick__ErrorOption swig_types[148]
#define SWIGTYPE_p_Magick__ErrorPolicy swig_types[149]
#define SWIGTYPE_p_Magick__ErrorRegistry swig_types[150]
#define SWIGTYPE_p_Magick__ErrorResourceLimit swig_types[151]
#define SWIGTYPE_p_Magick__ErrorStream swig_types[152]
#define SWIGTYPE_p_Magick__ErrorType swig_types[153]
#define SWIGTYPE_p_Magick__ErrorUndefined swig_types[154]
#define SWIGTYPE_p_Magick__ErrorXServer swig_types[155]
#define SWIGTYPE_p_Magick__Exception swig_types[156]
#define SWIGTYPE_p_Magick__Geometry swig_types[157]
#define SWIGTYPE_p_Magick__Image swig_types[158]
#define SWIGTYPE_p_Magick__ImageMoments swig_types[159]
#define SWIGTYPE_p_Magick__ImagePerceptualHash swig_types[160]
#define SWIGTYPE_p_Magick__ImageStatistics swig_types[161]
#define SWIGTYPE_p_Magick__Montage swig_types[162]
#define SWIGTYPE_p_Magick__MontageFramed swig_types[163]
#define SWIGTYPE_p_Magick__Offset swig_types[164]
#define SWIGTYPE_p_Magick__Options swig_types[165]
#define SWIGTYPE_p_Magick__PathArcAbs swig_types[166]
#define SWIGTYPE_p_Magick__PathArcArgs swig_types[167]
#define SWIGTYPE_p_Magick__PathArcRel swig_types[168]
#define SWIGTYPE_p_Magick__PathClosePath swig_types[169]
#define SWIGTYPE_p_Magick__PathCurvetoAbs swig_types[170]
#define SWIGTYPE_p_Magick__PathCurvetoArgs swig_types[171]
#define SWIGTYPE_p_Magick__PathCurvetoRel swig_types[172]
#define SWIGTYPE_p_Magick__PathLinetoAbs swig_types[173]
#define SWIGTYPE_p_Magick__PathLinetoHorizontalAbs swig_types[174]
#define SWIGTYPE_p_Magick__PathLinetoHorizontalRel swig_types[175]
#define SWIGTYPE_p_Magick__PathLinetoRel swig_types[176]
#define SWIGTYPE_p_Magick__PathLinetoVerticalAbs swig_types[177]
#define SWIGTYPE_p_Magick__PathLinetoVerticalRel swig_types[178]
#define SWIGTYPE_p_Magick__PathMovetoAbs swig_types[179]
#define SWIGTYPE_p_Magick__PathMovetoRel swig_types[180]
#define SWIGTYPE_p_Magick__PathQuadraticCurvetoAbs swig_types[181]
#define SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs swig_types[182]
#define SWIGTYPE_p_Magick__PathQuadraticCurvetoRel swig_types[183]
#define SWIGTYPE_p_Magick__PathSmoothCurvetoAbs swig_types[184]
#define SWIGTYPE_p_Magick__PathSmoothCurvetoRel swig_types[185]
#define SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoAbs swig_types[186]
#define SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoRel swig_types[187]
#define SWIGTYPE_p_Magick__Point swig_types[188]
#define SWIGTYPE_p_Magick__ReadOptions swig_types[189]
#define SWIGTYPE_p_Magick__ResourceLimits swig_types[190]
#define SWIGTYPE_p_Magick__TypeMetric swig_types[191]
#define SWIGTYPE_p_Magick__VPath swig_types[192]
#define SWIGTYPE_p_Magick__VPathBase swig_types[193]
#define SWIGTYPE_p_Magick__Warning swig_types[194]
#define SWIGTYPE_p_Magick__WarningBlob swig_types[195]
#define SWIGTYPE_p_Magick__WarningCache swig_types[196]
#define SWIGTYPE_p_Magick__WarningCoder swig_types[197]
#define SWIGTYPE_p_Magick__WarningConfigure swig_types[198]
#define SWIGTYPE_p_Magick__WarningCorruptImage swig_types[199]
#define SWIGTYPE_p_Magick__WarningDelegate swig_types[200]
#define SWIGTYPE_p_Magick__WarningDraw swig_types[201]
#define SWIGTYPE_p_Magick__WarningFileOpen swig_types[202]
#define SWIGTYPE_p_Magick__WarningImage swig_types[203]
#define SWIGTYPE_p_Magick__WarningMissingDelegate swig_types[204]
#define SWIGTYPE_p_Magick__WarningModule swig_types[205]
#define SWIGTYPE_p_Magick__WarningMonitor swig_types[206]
#define SWIGTYPE_p_Magick__WarningOption swig_types[207]
#define SWIGTYPE_p_Magick__WarningPolicy swig_types[208]
#define SWIGTYPE_p_Magick__WarningRegistry swig_types[209]
#define SWIGTYPE_p_Magick__WarningResourceLimit swig_types[210]
#define SWIGTYPE_p_Magick__WarningStream swig_types[211]
#define SWIGTYPE_p_Magick__WarningType swig_types[212]
#define SWIGTYPE_p_Magick__WarningUndefined swig_types[213]
#define SWIGTYPE_p_Magick__WarningXServer swig_types[214]
#define SWIGTYPE_p_Magick__adaptiveBlurImage swig_types[215]
#define SWIGTYPE_p_Magick__adaptiveThresholdImage swig_types[216]
#define SWIGTYPE_p_Magick__addNoiseImage swig_types[217]
#define SWIGTYPE_p_Magick__adjoinImage swig_types[218]
#define SWIGTYPE_p_Magick__affineTransformImage swig_types[219]
#define SWIGTYPE_p_Magick__alphaFlagImage swig_types[220]
#define SWIGTYPE_p_Magick__alphaImage swig_types[221]
#define SWIGTYPE_p_Magick__animationDelayImage swig_types[222]
#define SWIGTYPE_p_Magick__animationIterationsImage swig_types[223]
#define SWIGTYPE_p_Magick__annotateImage swig_types[224]
#define SWIGTYPE_p_Magick__backgroundColorImage swig_types[225]
#define SWIGTYPE_p_Magick__backgroundTextureImage swig_types[226]
#define SWIGTYPE_p_Magick__blurImage swig_types[227]
#define SWIGTYPE_p_Magick__borderColorImage swig_types[228]
#define SWIGTYPE_p_Magick__borderImage swig_types[229]
#define SWIGTYPE_p_Magick__boxColorImage swig_types[230]
#define SWIGTYPE_p_Magick__cdlImage swig_types[231]
#define SWIGTYPE_p_Magick__channelImage swig_types[232]
#define SWIGTYPE_p_Magick__charcoalImage swig_types[233]
#define SWIGTYPE_p_Magick__chopImage swig_types[234]
#define SWIGTYPE_p_Magick__chromaBluePrimaryImage swig_types[235]
#define SWIGTYPE_p_Magick__chromaGreenPrimaryImage swig_types[236]
#define SWIGTYPE_p_Magick__chromaRedPrimaryImage swig_types[237]
#define SWIGTYPE_p_Magick__chromaWhitePointImage swig_types[238]
#define SWIGTYPE_p_Magick__colorFuzzImage swig_types[239]
#define SWIGTYPE_p_Magick__colorMapImage swig_types[240]
#define SWIGTYPE_p_Magick__colorMatrixImage swig_types[241]
#define SWIGTYPE_p_Magick__colorSpaceImage swig_types[242]
#define SWIGTYPE_p_Magick__colorizeImage swig_types[243]
#define SWIGTYPE_p_Magick__commentImage swig_types[244]
#define SWIGTYPE_p_Magick__composeImage swig_types[245]
#define SWIGTYPE_p_Magick__compositeImage swig_types[246]
#define SWIGTYPE_p_Magick__compressTypeImage swig_types[247]
#define SWIGTYPE_p_Magick__contrastImage swig_types[248]
#define SWIGTYPE_p_Magick__cropImage swig_types[249]
#define SWIGTYPE_p_Magick__cycleColormapImage swig_types[250]
#define SWIGTYPE_p_Magick__densityImage swig_types[251]
#define SWIGTYPE_p_Magick__depthImage swig_types[252]
#define SWIGTYPE_p_Magick__despeckleImage swig_types[253]
#define SWIGTYPE_p_Magick__distortImage swig_types[254]
#define SWIGTYPE_p_Magick__drawImage swig_types[255]
#define SWIGTYPE_p_Magick__edgeImage swig_types[256]
#define SWIGTYPE_p_Magick__embossImage swig_types[257]
#define SWIGTYPE_p_Magick__endianImage swig_types[258]
#define SWIGTYPE_p_Magick__enhanceImage swig_types[259]
#define SWIGTYPE_p_Magick__equalizeImage swig_types[260]
#define SWIGTYPE_p_Magick__fileNameImage swig_types[261]
#define SWIGTYPE_p_Magick__fillColorImage swig_types[262]
#define SWIGTYPE_p_Magick__filterTypeImage swig_types[263]
#define SWIGTYPE_p_Magick__flipImage swig_types[264]
#define SWIGTYPE_p_Magick__floodFillAlphaImage swig_types[265]
#define SWIGTYPE_p_Magick__floodFillColorImage swig_types[266]
#define SWIGTYPE_p_Magick__floodFillTextureImage swig_types[267]
#define SWIGTYPE_p_Magick__flopImage swig_types[268]
#define SWIGTYPE_p_Magick__fontImage swig_types[269]
#define SWIGTYPE_p_Magick__fontPointsizeImage swig_types[270]
#define SWIGTYPE_p_Magick__frameImage swig_types[271]
#define SWIGTYPE_p_Magick__gammaImage swig_types[272]
#define SWIGTYPE_p_Magick__gaussianBlurImage swig_types[273]
#define SWIGTYPE_p_Magick__gifDisposeMethodImage swig_types[274]
#define SWIGTYPE_p_Magick__haldClutImage swig_types[275]
#define SWIGTYPE_p_Magick__implodeImage swig_types[276]
#define SWIGTYPE_p_Magick__interlaceTypeImage swig_types[277]
#define SWIGTYPE_p_Magick__inverseFourierTransformImage swig_types[278]
#define SWIGTYPE_p_Magick__isValidImage swig_types[279]
#define SWIGTYPE_p_Magick__labelImage swig_types[280]
#define SWIGTYPE_p_Magick__levelImage swig_types[281]
#define SWIGTYPE_p_Magick__magickImage swig_types[282]
#define SWIGTYPE_p_Magick__magnifyImage swig_types[283]
#define SWIGTYPE_p_Magick__mapImage swig_types[284]
#define SWIGTYPE_p_Magick__matteColorImage swig_types[285]
#define SWIGTYPE_p_Magick__medianConvolveImage swig_types[286]
#define SWIGTYPE_p_Magick__minifyImage swig_types[287]
#define SWIGTYPE_p_Magick__modulateImage swig_types[288]
#define SWIGTYPE_p_Magick__monochromeImage swig_types[289]
#define SWIGTYPE_p_Magick__negateImage swig_types[290]
#define SWIGTYPE_p_Magick__normalizeImage swig_types[291]
#define SWIGTYPE_p_Magick__oilPaintImage swig_types[292]
#define SWIGTYPE_p_Magick__opaqueImage swig_types[293]
#define SWIGTYPE_p_Magick__pageImage swig_types[294]
#define SWIGTYPE_p_Magick__pixelColorImage swig_types[295]
#define SWIGTYPE_p_Magick__qualityImage swig_types[296]
#define SWIGTYPE_p_Magick__quantizeColorSpaceImage swig_types[297]
#define SWIGTYPE_p_Magick__quantizeColorsImage swig_types[298]
#define SWIGTYPE_p_Magick__quantizeDitherImage swig_types[299]
#define SWIGTYPE_p_Magick__quantizeImage swig_types[300]
#define SWIGTYPE_p_Magick__quantizeTreeDepthImage swig_types[301]
#define SWIGTYPE_p_Magick__raiseImage swig_types[302]
#define SWIGTYPE_p_Magick__reduceNoiseImage swig_types[303]
#define SWIGTYPE_p_Magick__renderingIntentImage swig_types[304]
#define SWIGTYPE_p_Magick__resizeImage swig_types[305]
#define SWIGTYPE_p_Magick__resolutionUnitsImage swig_types[306]
#define SWIGTYPE_p_Magick__rollImage swig_types[307]
#define SWIGTYPE_p_Magick__rotateImage swig_types[308]
#define SWIGTYPE_p_Magick__sampleImage swig_types[309]
#define SWIGTYPE_p_Magick__scaleImage swig_types[310]
#define SWIGTYPE_p_Magick__sceneImage swig_types[311]
#define SWIGTYPE_p_Magick__segmentImage swig_types[312]
#define SWIGTYPE_p_Magick__shadeImage swig_types[313]
#define SWIGTYPE_p_Magick__shadowImage swig_types[314]
#define SWIGTYPE_p_Magick__sharpenImage swig_types[315]
#define SWIGTYPE_p_Magick__shaveImage swig_types[316]
#define SWIGTYPE_p_Magick__shearImage swig_types[317]
#define SWIGTYPE_p_Magick__sizeImage swig_types[318]
#define SWIGTYPE_p_Magick__solarizeImage swig_types[319]
#define SWIGTYPE_p_Magick__spliceImage swig_types[320]
#define SWIGTYPE_p_Magick__spreadImage swig_types[321]
#define SWIGTYPE_p_Magick__steganoImage swig_types[322]
#define SWIGTYPE_p_Magick__stereoImage swig_types[323]
#define SWIGTYPE_p_Magick__stripImage swig_types[324]
#define SWIGTYPE_p_Magick__strokeColorImage swig_types[325]
#define SWIGTYPE_p_Magick__subImageImage swig_types[326]
#define SWIGTYPE_p_Magick__subRangeImage swig_types[327]
#define SWIGTYPE_p_Magick__swirlImage swig_types[328]
#define SWIGTYPE_p_Magick__textAntiAliasImage swig_types[329]
#define SWIGTYPE_p_Magick__textureImage swig_types[330]
#define SWIGTYPE_p_Magick__thresholdImage swig_types[331]
#define SWIGTYPE_p_Magick__transparentImage swig_types[332]
#define SWIGTYPE_p_Magick__trimImage swig_types[333]
#define SWIGTYPE_p_Magick__typeImage swig_types[334]
#define SWIGTYPE_p_Magick__verboseImage swig_types[335]
#define SWIGTYPE_p_Magick__waveImage swig_types[336]
#define SWIGTYPE_p_Magick__x11DisplayImage swig_types[337]
#define SWIGTYPE_p_Magick__zoomImage swig_types[338]
#define SWIGTYPE_p__DrawingWand swig_types[339]
#define SWIGTYPE_p__PolicyInfo swig_types[340]
#define SWIGTYPE_p_char swig_types[341]
#define SWIGTYPE_p_difference_type swig_types[342]
#define SWIGTYPE_p_double swig_types[343]
#define SWIGTYPE_p_float swig_types[344]
#define SWIGTYPE_p_long_long swig_types[345]
#define SWIGTYPE_p_p_MagickCore___Image swig_types[346]
#define SWIGTYPE_p_p_char swig_types[347]
#define SWIGTYPE_p_p_void swig_types[348]
#define SWIGTYPE_p_size_t swig_types[349]
#define SWIGTYPE_p_size_type swig_types[350]
#define SWIGTYPE_p_std__exception swig_types[351]
#define SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t swig_types[352]
#define SWIGTYPE_p_std__vectorT_Magick__Coordinate_t swig_types[353]
#define SWIGTYPE_p_std__vectorT_Magick__Drawable_t swig_types[354]
#define SWIGTYPE_p_std__vectorT_Magick__PathArcArgs_t swig_types[355]
#define SWIGTYPE_p_std__vectorT_Magick__PathCurvetoArgs_t swig_types[356]
#define SWIGTYPE_p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t swig_types[357]
#define SWIGTYPE_p_std__vectorT_Magick__VPath_t swig_types[358]
#define SWIGTYPE_p_uintptr_t swig_types[359]
#define SWIGTYPE_p_unsigned_char swig_types[360]
#define SWIGTYPE_p_unsigned_int swig_types[361]
#define SWIGTYPE_p_unsigned_long_long swig_types[362]
#define SWIGTYPE_p_value_type swig_types[363]
#define SWIGTYPE_p_void swig_types[364]
static swig_type_info *swig_types[366];
static swig_module_info swig_module = {swig_types, 365, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)

/* -------- TYPES TABLE (END) -------- */



#ifdef __cplusplus
#include <utility>
/* SwigValueWrapper is described in swig.swg */
template<typename T> class SwigValueWrapper {
  struct SwigSmartPointer {
    T *ptr;
    SwigSmartPointer(T *p) : ptr(p) { }
    ~SwigSmartPointer() { delete ptr; }
    SwigSmartPointer& operator=(SwigSmartPointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
    void reset(T *p) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = p; }
  } pointer;
  SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
  SwigValueWrapper(const SwigValueWrapper<T>& rhs);
public:
  SwigValueWrapper() : pointer(0) { }
  SwigValueWrapper& operator=(const T& t) { SwigSmartPointer tmp(new T(t)); pointer = tmp; return *this; }
#if __cplusplus >=201103L
  SwigValueWrapper& operator=(T&& t) { SwigSmartPointer tmp(new T(std::move(t))); pointer = tmp; return *this; }
  operator T&&() const { return std::move(*pointer.ptr); }
#else
  operator T&() const { return *pointer.ptr; }
#endif
  T *operator&() const { return pointer.ptr; }
  static void reset(SwigValueWrapper& t, T *p) { t.pointer.reset(p); }
};

/*
 * SwigValueInit() is a generic initialisation solution as the following approach:
 * 
 *       T c_result = T();
 * 
 * doesn't compile for all types for example:
 * 
 *       unsigned int c_result = unsigned int();
 */
template <typename T> T SwigValueInit() {
  return T();
}

#if __cplusplus >=201103L
# define SWIG_STD_MOVE(OBJ) std::move(OBJ)
#else
# define SWIG_STD_MOVE(OBJ) OBJ
#endif

#endif


#define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) 
#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) 


#include <stdexcept>


#include <assert.h>


// Includes the header in the wrapper code
#define MAGICKCORE_EXCLUDE_DEPRECATED
#include <Magick++.h>
#include <MagickWand/MagickWand.h>
#include <iostream>

using namespace Magick;


#include <string>


#include <typeinfo>
#include <stdexcept>


#include <vector>
#include <stdexcept>


SWIGINTERN
Napi::Value SWIG_From_int(Napi::Env env, int val)
{
  return Napi::Number::New(env, val);
}


SWIGINTERN
Napi::Value SWIG_From_unsigned_SS_long(Napi::Env env, unsigned long val)
{
  return Napi::Number::New(env, val);
}


SWIGINTERN
Napi::Value SWIG_From_double(Napi::Env env, double val)
{
  return Napi::Number::New(env, val);
}


SWIGINTERNINLINE Napi::Value
SWIG_Env_FromCharPtrAndSize(Napi::Env env, const char* carray, size_t size)
{
  if (carray) {
    Napi::String js_str = Napi::String::New(env, carray, size);
    return js_str;
  } else {
    return env.Null();
  }
}


// Override the default one with an empty one


SWIGINTERN swig_type_info*
SWIG_pchar_descriptor(void)
{
  static int init = 0;
  static swig_type_info* info = 0;
  if (!init) {
    info = SWIG_TypeQuery("_p_char");
    init = 1;
  }
  return info;
}


SWIGINTERN int
SWIG_AsCharPtrAndSize(Napi::Value valRef, char** cptr, size_t* psize, int *alloc)
{
  if(valRef.IsString()) {
    Napi::String js_str;
    NAPI_CHECK_RESULT(valRef.ToString(), js_str);

    std::string str = js_str.Utf8Value();
    size_t len = str.size() + 1;
    char* cstr = (char*) (new char[len]());
    memcpy(cstr, str.data(), len);
    
    if(alloc) *alloc = SWIG_NEWOBJ;
    if(psize) *psize = len;
    if(cptr) *cptr = cstr;
    
    return SWIG_OK;
  } else {
    if(valRef.IsObject()) {
      swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
      Napi::Object obj;
      NAPI_CHECK_RESULT(valRef.ToObject(), obj);
      // try if the object is a wrapped char[]
      if (pchar_descriptor) {
        void* vptr = 0;
        if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) {
          if (cptr) *cptr = (char *) vptr;
          if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0;
          if (alloc) *alloc = SWIG_OLDOBJ;
          return SWIG_OK;
        }
      }
    }
  }
  goto fail;
fail:
  return SWIG_TypeError;
}





SWIGINTERN
int SWIG_AsVal_int (Napi::Value valRef, int* val)
{
  if (!valRef.IsNumber()) {
    return SWIG_TypeError;
  }
  if (val) {
    Napi::Number num;
    NAPI_CHECK_RESULT(valRef.ToNumber(), num);
    *val = static_cast<int>(num.Int32Value());
  }

  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}


inline Magick::StorageType GetMagickStorageType(Napi::Env env, const Napi::TypedArray &array) {
  switch (array.TypedArrayType()) {
    case napi_int8_array:
    case napi_uint8_array:
    case napi_uint8_clamped_array:
      return MagickCore::CharPixel;
    case napi_int16_array:
    case napi_uint16_array:
      return MagickCore::ShortPixel;
    case napi_int32_array:
    case napi_uint32_array:
      return MagickCore::LongPixel;
    case napi_float32_array:
      return MagickCore::FloatPixel;
    case napi_float64_array:
      return MagickCore::DoublePixel;
#if (NAPI_VERSION > 5)
    case napi_bigint64_array:
    case napi_biguint64_array:
#endif  // (NAPI_VERSION > 5)
      return MagickCore::LongLongPixel;
  }
  SWIG_Error(SWIG_ERROR, "Invalid type");
  // Avoid a warning
  return MagickCore::CharPixel;
}


typedef std::vector<Magick::Image>             ImageListContainer;
typedef std::vector<Magick::Image>::iterator   ImageListIterator;


SWIGINTERN
Napi::Value SWIG_From_bool(Napi::Env env, bool val)
{
  return Napi::Boolean::New(env, val);
}


SWIGINTERN
int SWIG_AsVal_double (Napi::Value obj, double *val)
{
  if(!obj.IsNumber()) {
    return SWIG_TypeError;
  }

  if(val) {
    Napi::Number num;
    NAPI_CHECK_RESULT(obj.ToNumber(), num);
    *val = static_cast<double>(num.DoubleValue());
  }

  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}


#include <float.h>


#include <math.h>


SWIGINTERNINLINE int
SWIG_CanCastAsInteger(double *d, double min, double max) {
  double x = *d;
  if ((min <= x && x <= max)) {
   double fx, cx, rd;
   errno = 0;
   fx = floor(x);
   cx = ceil(x);
   rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
   if ((errno == EDOM) || (errno == ERANGE)) {
     errno = 0;
   } else {
     double summ, reps, diff;
     if (rd < x) {
       diff = x - rd;
     } else if (rd > x) {
       diff = rd - x;
     } else {
       return 1;
     }
     summ = rd + x;
     reps = diff/summ;
     if (reps < 8*DBL_EPSILON) {
       *d = rd;
       return 1;
     }
   }
  }
  return 0;
}


SWIGINTERN
int SWIG_AsVal_unsigned_SS_long (Napi::Value obj, unsigned long *val)
{
  if(!obj.IsNumber()) {
    return SWIG_TypeError;
  }
  if (val) {
    Napi::Number num;
    NAPI_CHECK_RESULT(obj.ToNumber(), num);
    if (num.Int64Value() < 0) {
      return SWIG_TypeError;
    }
    *val = static_cast<unsigned long>(num.Int64Value());
  }
  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}


SWIGINTERN int
SWIG_AsPtr_std_string (Napi::Value obj, std::string **val) 
{
  char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ;
  if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) {
    if (buf) {
      if (val) *val = new std::string(buf, size - 1);
      if (alloc == SWIG_NEWOBJ) delete[] buf;
      return SWIG_NEWOBJ;
    } else {
      if (val) *val = 0;
      return SWIG_OLDOBJ;
    }
  } else {
    static int init = 0;
    static swig_type_info* descriptor = 0;
    if (!init) {
      descriptor = SWIG_TypeQuery("std::string" " *");
      init = 1;
    }
    if (descriptor) {
      std::string *vptr;
      int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0);
      if (SWIG_IsOK(res) && val) *val = vptr;
      return res;
    }
  }
  return SWIG_ERROR;
}


SWIGINTERNINLINE Napi::Value
SWIG_From_std_string  SWIG_NAPI_FROM_DECL_ARGS(const std::string& s)
{
  return SWIG_FromCharPtrAndSize(s.data(), s.size());
}


SWIGINTERN
Napi::Value SWIG_From_unsigned_SS_int(Napi::Env env, unsigned int val)
{
  return Napi::Number::New(env, val);
}

SWIGINTERN void Magick_Magick_Blob_data(Magick::Blob const *self,void **buffer_data,size_t *buffer_len){
    *buffer_data = const_cast<void *>(self->data());
    *buffer_len = self->length();
  }

SWIGINTERN
int SWIG_AsVal_float (Napi::Value obj, float *val)
{
  if(!obj.IsNumber()) {
    return SWIG_TypeError;
  }

  if(val) {
    Napi::Number num;
    NAPI_CHECK_RESULT(obj.ToNumber(), num);
    *val = static_cast<float>(num.DoubleValue());
  }

  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}


SWIGINTERN
int SWIG_AsVal_long (Napi::Value obj, long* val)
{
  if (!obj.IsNumber()) {
    return SWIG_TypeError;
  }
  if (val) {
    Napi::Number num;
    NAPI_CHECK_RESULT(obj.ToNumber(), num);
    *val = static_cast<long>(num.Int64Value());
  }

  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}


SWIGINTERN
int SWIG_AsVal_bool (Napi::Value obj, bool *val)
{
  if(!obj.IsBoolean()) {
    return SWIG_TypeError;
  }

  Napi::Boolean b;
  NAPI_CHECK_RESULT(obj.ToBoolean(), b);
  if (val) *val = b.Value();
  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}


SWIGINTERN
Napi::Value SWIG_From_float(Napi::Env env, float val)
{
  return Napi::Number::New(env, val);
}


SWIGINTERN
int SWIG_AsVal_unsigned_SS_int (Napi::Value valRef, unsigned int* val)
{
  if (!valRef.IsNumber()) {
    return SWIG_TypeError;
  }
  if (val) {
    Napi::Number num;
    NAPI_CHECK_RESULT(valRef.ToNumber(), num);
    if (num.Int64Value() < 0) {
      return SWIG_TypeError;
    }
    *val = static_cast<unsigned int>(num.Uint32Value());
  }

  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}


#include <limits.h>
#if !defined(SWIG_NO_LLONG_MAX)
# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
#   define LLONG_MAX __LONG_LONG_MAX__
#   define LLONG_MIN (-LLONG_MAX - 1LL)
#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
# endif
#endif


#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE)
#  define SWIG_LONG_LONG_AVAILABLE
#endif


#ifdef SWIG_LONG_LONG_AVAILABLE
SWIGINTERN
Napi::Value SWIG_From_unsigned_SS_long_SS_long(Napi::Env env, unsigned long long val)
{
  return Napi::Number::New(env, val);
}
#endif


#ifdef SWIG_LONG_LONG_AVAILABLE
SWIGINTERN
int SWIG_AsVal_unsigned_SS_long_SS_long (Napi::Value obj, unsigned long long *val)
{
  if(!obj.IsNumber()) {
    return SWIG_TypeError;
  }
  if (obj.ToNumber().Int64Value() < 0) {
    return SWIG_TypeError;
  }
  if (val) {
    Napi::Number num;
    NAPI_CHECK_RESULT(obj.ToNumber(), num);
    *val = static_cast<unsigned long long>(num.Int64Value());
  }
  return SWIG_OK;
  goto fail;
fail:
  return SWIG_ERROR;
}
#endif

SWIGINTERN std::vector< Magick::CoderInfo >::const_reference std_std_vector_Sl_Magick_CoderInfo_Sg__get(std::vector< Magick::CoderInfo > *self,int i){
                int size = int(self->size());
                if (i>=0 && i<size)
                    return (*self)[i];
                else
                    throw std::out_of_range("vector index out of range");
            }
SWIGINTERN void std_std_vector_Sl_Magick_CoderInfo_Sg__set(std::vector< Magick::CoderInfo > *self,int i,std::vector< Magick::CoderInfo >::value_type const &val){
                int size = int(self->size());
                if (i>=0 && i<size)
                    (*self)[i] = val;
                else
                    throw std::out_of_range("vector index out of range");
            }

#define SWIG_NAPI_INIT magickwand_initialize


// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Blob_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Blob_templ(const Napi::CallbackInfo &);
_Magick_Blob_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Blob__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Blob__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Blob__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_Blob_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_base64Async__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_base64__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_base64Async__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Blob__wrap_Magick_Blob_base64Async(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_base64__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Blob__wrap_Magick_Blob_base64(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_lengthAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_length(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_updateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_update(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_dataAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Blob_data(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Blob_inst : public _Magick_Blob_templ<_Magick_Blob_inst> {
public:
  using _Magick_Blob_templ::_Magick_Blob_templ;
  virtual ~_Magick_Blob_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Blob_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Blob_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Blob (_Magick_Blob) */
// jsnapi_getclass
Napi::Function _Magick_Blob_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Blob_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Blob_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Blob_inst>::DefineClass(env, "Blob", symbolTable);
}

void _Magick_Blob_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Blob_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Blob_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Blob_templ::InstanceMethod("clone",
        &_Magick_Blob_templ::_wrap_Magick_Blob_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("base64Async");
  members.insert({
    "base64Async",
      _Magick_Blob_templ::InstanceMethod("base64Async",
        &_Magick_Blob_templ::_wrap_Blob__wrap_Magick_Blob_base64Async,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("base64");
  members.insert({
    "base64",
      _Magick_Blob_templ::InstanceMethod("base64",
        &_Magick_Blob_templ::_wrap_Blob__wrap_Magick_Blob_base64,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lengthAsync");
  members.insert({
    "lengthAsync",
      _Magick_Blob_templ::InstanceMethod("lengthAsync",
        &_Magick_Blob_templ::_wrap_Magick_Blob_lengthAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("length");
  members.insert({
    "length",
      _Magick_Blob_templ::InstanceMethod("length",
        &_Magick_Blob_templ::_wrap_Magick_Blob_length,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("updateAsync");
  members.insert({
    "updateAsync",
      _Magick_Blob_templ::InstanceMethod("updateAsync",
        &_Magick_Blob_templ::_wrap_Magick_Blob_updateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("update");
  members.insert({
    "update",
      _Magick_Blob_templ::InstanceMethod("update",
        &_Magick_Blob_templ::_wrap_Magick_Blob_update,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("dataAsync");
  members.insert({
    "dataAsync",
      _Magick_Blob_templ::InstanceMethod("dataAsync",
        &_Magick_Blob_templ::_wrap_Magick_Blob_dataAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("data");
  members.insert({
    "data",
      _Magick_Blob_templ::InstanceMethod("data",
        &_Magick_Blob_templ::_wrap_Magick_Blob_data,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gt__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lt__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gte__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lte__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Color_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Color_templ(const Napi::CallbackInfo &);
_Magick_Color_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value Magick_Color_CMYKPixel_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value Magick_Color_CMYKAPixel_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value Magick_Color_RGBPixel_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value Magick_Color_RGBAPixel_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Color__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Color__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Color__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Color__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Color__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Color__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Color__SWIG_6(const Napi::CallbackInfo &);
virtual ~_Magick_Color_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_clone__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_clone__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_clone__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Color__wrap_Magick_Color_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_toString(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_isFuzzyEquivalent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_isValid__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_isValid__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Color__wrap_Magick_Color_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_pixelType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumAlpha__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumAlpha__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Color__wrap_Magick_Color_quantumAlpha(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumBlack__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumBlack__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Color__wrap_Magick_Color_quantumBlack(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumBlue__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumBlue__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Color__wrap_Magick_Color_quantumBlue(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumGreen__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumGreen__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Color__wrap_Magick_Color_quantumGreen(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumRed__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Color_quantumRed__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Color__wrap_Magick_Color_quantumRed(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Color_inst : public _Magick_Color_templ<_Magick_Color_inst> {
public:
  using _Magick_Color_templ::_Magick_Color_templ;
  virtual ~_Magick_Color_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Color_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Color_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Color (_Magick_Color) */
// jsnapi_getclass
Napi::Function _Magick_Color_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Color_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Color_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Color_inst>::DefineClass(env, "Color", symbolTable);
}

void _Magick_Color_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Color_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Color_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Color_templ::InstanceMethod("clone",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Color_templ::InstanceMethod("toString",
        &_Magick_Color_templ::_wrap_Magick_Color_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isFuzzyEquivalent");
  members.insert({
    "isFuzzyEquivalent",
      _Magick_Color_templ::InstanceMethod("isFuzzyEquivalent",
        &_Magick_Color_templ::_wrap_Magick_Color_isFuzzyEquivalent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Color_templ::InstanceMethod("isValid",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelType");
  members.insert({
    "pixelType",
      _Magick_Color_templ::InstanceMethod("pixelType",
        &_Magick_Color_templ::_wrap_Magick_Color_pixelType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumAlpha");
  members.insert({
    "quantumAlpha",
      _Magick_Color_templ::InstanceMethod("quantumAlpha",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlack");
  members.insert({
    "quantumBlack",
      _Magick_Color_templ::InstanceMethod("quantumBlack",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlack,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlue");
  members.insert({
    "quantumBlue",
      _Magick_Color_templ::InstanceMethod("quantumBlue",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumGreen");
  members.insert({
    "quantumGreen",
      _Magick_Color_templ::InstanceMethod("quantumGreen",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumGreen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumRed");
  members.insert({
    "quantumRed",
      _Magick_Color_templ::InstanceMethod("quantumRed",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumRed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKPixel");
    staticMembers.insert({
      "CMYKPixel", StaticValue("CMYKPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKAPixel");
    staticMembers.insert({
      "CMYKAPixel", StaticValue("CMYKAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBPixel");
    staticMembers.insert({
      "RGBPixel", StaticValue("RGBPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBAPixel");
    staticMembers.insert({
      "RGBAPixel", StaticValue("RGBAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ColorCMYK_templ : public _Magick_Color_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ColorCMYK_templ(const Napi::CallbackInfo &);
_Magick_ColorCMYK_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorCMYK__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorCMYK__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorCMYK__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorCMYK__SWIG_3(const Napi::CallbackInfo &);
virtual ~_Magick_ColorCMYK_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_alpha__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_alpha__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorCMYK__wrap_Magick_ColorCMYK_alpha(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_black__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_black__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorCMYK__wrap_Magick_ColorCMYK_black(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_cyan__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_cyan__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorCMYK__wrap_Magick_ColorCMYK_cyan(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_magenta__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_magenta__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorCMYK__wrap_Magick_ColorCMYK_magenta(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_yellow__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorCMYK_yellow__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorCMYK__wrap_Magick_ColorCMYK_yellow(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ColorCMYK_inst : public _Magick_ColorCMYK_templ<_Magick_ColorCMYK_inst> {
public:
  using _Magick_ColorCMYK_templ::_Magick_ColorCMYK_templ;
  virtual ~_Magick_ColorCMYK_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ColorCMYK_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ColorCMYK_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ColorCMYK (_Magick_ColorCMYK) */
// jsnapi_getclass
Napi::Function _Magick_ColorCMYK_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ColorCMYK_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ColorCMYK_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ColorCMYK_inst>::DefineClass(env, "ColorCMYK", symbolTable);
}

void _Magick_ColorCMYK_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ColorCMYK_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ColorCMYK_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_Color_templ<_Magick_Color_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_Color_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Color_templ::InstanceMethod("clone",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Color_templ::InstanceMethod("toString",
        &_Magick_Color_templ::_wrap_Magick_Color_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isFuzzyEquivalent");
  members.insert({
    "isFuzzyEquivalent",
      _Magick_Color_templ::InstanceMethod("isFuzzyEquivalent",
        &_Magick_Color_templ::_wrap_Magick_Color_isFuzzyEquivalent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Color_templ::InstanceMethod("isValid",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelType");
  members.insert({
    "pixelType",
      _Magick_Color_templ::InstanceMethod("pixelType",
        &_Magick_Color_templ::_wrap_Magick_Color_pixelType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumAlpha");
  members.insert({
    "quantumAlpha",
      _Magick_Color_templ::InstanceMethod("quantumAlpha",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlack");
  members.insert({
    "quantumBlack",
      _Magick_Color_templ::InstanceMethod("quantumBlack",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlack,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlue");
  members.insert({
    "quantumBlue",
      _Magick_Color_templ::InstanceMethod("quantumBlue",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumGreen");
  members.insert({
    "quantumGreen",
      _Magick_Color_templ::InstanceMethod("quantumGreen",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumGreen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumRed");
  members.insert({
    "quantumRed",
      _Magick_Color_templ::InstanceMethod("quantumRed",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumRed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_ColorCMYK_templ::InstanceMethod("clone",
        &_Magick_ColorCMYK_templ::_wrap_Magick_ColorCMYK_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("alpha");
  members.insert({
    "alpha",
      _Magick_ColorCMYK_templ::InstanceMethod("alpha",
        &_Magick_ColorCMYK_templ::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_alpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("black");
  members.insert({
    "black",
      _Magick_ColorCMYK_templ::InstanceMethod("black",
        &_Magick_ColorCMYK_templ::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_black,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cyan");
  members.insert({
    "cyan",
      _Magick_ColorCMYK_templ::InstanceMethod("cyan",
        &_Magick_ColorCMYK_templ::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_cyan,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("magenta");
  members.insert({
    "magenta",
      _Magick_ColorCMYK_templ::InstanceMethod("magenta",
        &_Magick_ColorCMYK_templ::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_magenta,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("yellow");
  members.insert({
    "yellow",
      _Magick_ColorCMYK_templ::InstanceMethod("yellow",
        &_Magick_ColorCMYK_templ::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_yellow,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKPixel");
    staticMembers.insert({
      "CMYKPixel", StaticValue("CMYKPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKAPixel");
    staticMembers.insert({
      "CMYKAPixel", StaticValue("CMYKAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBPixel");
    staticMembers.insert({
      "RGBPixel", StaticValue("RGBPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBAPixel");
    staticMembers.insert({
      "RGBAPixel", StaticValue("RGBAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ColorGray_templ : public _Magick_Color_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ColorGray_templ(const Napi::CallbackInfo &);
_Magick_ColorGray_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorGray__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorGray__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorGray__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_ColorGray_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorGray_shade__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorGray_shade__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorGray__wrap_Magick_ColorGray_shade(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorGray_clone(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ColorGray_inst : public _Magick_ColorGray_templ<_Magick_ColorGray_inst> {
public:
  using _Magick_ColorGray_templ::_Magick_ColorGray_templ;
  virtual ~_Magick_ColorGray_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ColorGray_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ColorGray_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ColorGray (_Magick_ColorGray) */
// jsnapi_getclass
Napi::Function _Magick_ColorGray_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ColorGray_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ColorGray_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ColorGray_inst>::DefineClass(env, "ColorGray", symbolTable);
}

void _Magick_ColorGray_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ColorGray_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ColorGray_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_Color_templ<_Magick_Color_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_Color_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Color_templ::InstanceMethod("clone",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Color_templ::InstanceMethod("toString",
        &_Magick_Color_templ::_wrap_Magick_Color_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isFuzzyEquivalent");
  members.insert({
    "isFuzzyEquivalent",
      _Magick_Color_templ::InstanceMethod("isFuzzyEquivalent",
        &_Magick_Color_templ::_wrap_Magick_Color_isFuzzyEquivalent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Color_templ::InstanceMethod("isValid",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelType");
  members.insert({
    "pixelType",
      _Magick_Color_templ::InstanceMethod("pixelType",
        &_Magick_Color_templ::_wrap_Magick_Color_pixelType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumAlpha");
  members.insert({
    "quantumAlpha",
      _Magick_Color_templ::InstanceMethod("quantumAlpha",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlack");
  members.insert({
    "quantumBlack",
      _Magick_Color_templ::InstanceMethod("quantumBlack",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlack,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlue");
  members.insert({
    "quantumBlue",
      _Magick_Color_templ::InstanceMethod("quantumBlue",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumGreen");
  members.insert({
    "quantumGreen",
      _Magick_Color_templ::InstanceMethod("quantumGreen",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumGreen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumRed");
  members.insert({
    "quantumRed",
      _Magick_Color_templ::InstanceMethod("quantumRed",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumRed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shade");
  members.insert({
    "shade",
      _Magick_ColorGray_templ::InstanceMethod("shade",
        &_Magick_ColorGray_templ::_wrap_ColorGray__wrap_Magick_ColorGray_shade,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_ColorGray_templ::InstanceMethod("clone",
        &_Magick_ColorGray_templ::_wrap_Magick_ColorGray_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKPixel");
    staticMembers.insert({
      "CMYKPixel", StaticValue("CMYKPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKAPixel");
    staticMembers.insert({
      "CMYKAPixel", StaticValue("CMYKAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBPixel");
    staticMembers.insert({
      "RGBPixel", StaticValue("RGBPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBAPixel");
    staticMembers.insert({
      "RGBAPixel", StaticValue("RGBAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ColorHSL_templ : public _Magick_Color_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ColorHSL_templ(const Napi::CallbackInfo &);
_Magick_ColorHSL_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorHSL__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorHSL__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorHSL__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_ColorHSL_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorHSL_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorHSL_hue__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorHSL_hue__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorHSL__wrap_Magick_ColorHSL_hue(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorHSL_lightness__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorHSL_lightness__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorHSL__wrap_Magick_ColorHSL_lightness(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorHSL_saturation__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorHSL_saturation__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorHSL__wrap_Magick_ColorHSL_saturation(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ColorHSL_inst : public _Magick_ColorHSL_templ<_Magick_ColorHSL_inst> {
public:
  using _Magick_ColorHSL_templ::_Magick_ColorHSL_templ;
  virtual ~_Magick_ColorHSL_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ColorHSL_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ColorHSL_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ColorHSL (_Magick_ColorHSL) */
// jsnapi_getclass
Napi::Function _Magick_ColorHSL_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ColorHSL_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ColorHSL_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ColorHSL_inst>::DefineClass(env, "ColorHSL", symbolTable);
}

void _Magick_ColorHSL_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ColorHSL_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ColorHSL_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_Color_templ<_Magick_Color_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_Color_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Color_templ::InstanceMethod("clone",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Color_templ::InstanceMethod("toString",
        &_Magick_Color_templ::_wrap_Magick_Color_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isFuzzyEquivalent");
  members.insert({
    "isFuzzyEquivalent",
      _Magick_Color_templ::InstanceMethod("isFuzzyEquivalent",
        &_Magick_Color_templ::_wrap_Magick_Color_isFuzzyEquivalent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Color_templ::InstanceMethod("isValid",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelType");
  members.insert({
    "pixelType",
      _Magick_Color_templ::InstanceMethod("pixelType",
        &_Magick_Color_templ::_wrap_Magick_Color_pixelType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumAlpha");
  members.insert({
    "quantumAlpha",
      _Magick_Color_templ::InstanceMethod("quantumAlpha",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlack");
  members.insert({
    "quantumBlack",
      _Magick_Color_templ::InstanceMethod("quantumBlack",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlack,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlue");
  members.insert({
    "quantumBlue",
      _Magick_Color_templ::InstanceMethod("quantumBlue",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumGreen");
  members.insert({
    "quantumGreen",
      _Magick_Color_templ::InstanceMethod("quantumGreen",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumGreen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumRed");
  members.insert({
    "quantumRed",
      _Magick_Color_templ::InstanceMethod("quantumRed",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumRed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_ColorHSL_templ::InstanceMethod("clone",
        &_Magick_ColorHSL_templ::_wrap_Magick_ColorHSL_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("hue");
  members.insert({
    "hue",
      _Magick_ColorHSL_templ::InstanceMethod("hue",
        &_Magick_ColorHSL_templ::_wrap_ColorHSL__wrap_Magick_ColorHSL_hue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lightness");
  members.insert({
    "lightness",
      _Magick_ColorHSL_templ::InstanceMethod("lightness",
        &_Magick_ColorHSL_templ::_wrap_ColorHSL__wrap_Magick_ColorHSL_lightness,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("saturation");
  members.insert({
    "saturation",
      _Magick_ColorHSL_templ::InstanceMethod("saturation",
        &_Magick_ColorHSL_templ::_wrap_ColorHSL__wrap_Magick_ColorHSL_saturation,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKPixel");
    staticMembers.insert({
      "CMYKPixel", StaticValue("CMYKPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKAPixel");
    staticMembers.insert({
      "CMYKAPixel", StaticValue("CMYKAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBPixel");
    staticMembers.insert({
      "RGBPixel", StaticValue("RGBPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBAPixel");
    staticMembers.insert({
      "RGBAPixel", StaticValue("RGBAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ColorMono_templ : public _Magick_Color_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ColorMono_templ(const Napi::CallbackInfo &);
_Magick_ColorMono_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorMono__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorMono__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorMono__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_ColorMono_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorMono_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorMono_mono__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorMono_mono__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorMono__wrap_Magick_ColorMono_mono(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ColorMono_inst : public _Magick_ColorMono_templ<_Magick_ColorMono_inst> {
public:
  using _Magick_ColorMono_templ::_Magick_ColorMono_templ;
  virtual ~_Magick_ColorMono_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ColorMono_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ColorMono_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ColorMono (_Magick_ColorMono) */
// jsnapi_getclass
Napi::Function _Magick_ColorMono_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ColorMono_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ColorMono_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ColorMono_inst>::DefineClass(env, "ColorMono", symbolTable);
}

void _Magick_ColorMono_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ColorMono_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ColorMono_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_Color_templ<_Magick_Color_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_Color_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Color_templ::InstanceMethod("clone",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Color_templ::InstanceMethod("toString",
        &_Magick_Color_templ::_wrap_Magick_Color_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isFuzzyEquivalent");
  members.insert({
    "isFuzzyEquivalent",
      _Magick_Color_templ::InstanceMethod("isFuzzyEquivalent",
        &_Magick_Color_templ::_wrap_Magick_Color_isFuzzyEquivalent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Color_templ::InstanceMethod("isValid",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelType");
  members.insert({
    "pixelType",
      _Magick_Color_templ::InstanceMethod("pixelType",
        &_Magick_Color_templ::_wrap_Magick_Color_pixelType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumAlpha");
  members.insert({
    "quantumAlpha",
      _Magick_Color_templ::InstanceMethod("quantumAlpha",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlack");
  members.insert({
    "quantumBlack",
      _Magick_Color_templ::InstanceMethod("quantumBlack",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlack,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlue");
  members.insert({
    "quantumBlue",
      _Magick_Color_templ::InstanceMethod("quantumBlue",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumGreen");
  members.insert({
    "quantumGreen",
      _Magick_Color_templ::InstanceMethod("quantumGreen",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumGreen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumRed");
  members.insert({
    "quantumRed",
      _Magick_Color_templ::InstanceMethod("quantumRed",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumRed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_ColorMono_templ::InstanceMethod("clone",
        &_Magick_ColorMono_templ::_wrap_Magick_ColorMono_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("mono");
  members.insert({
    "mono",
      _Magick_ColorMono_templ::InstanceMethod("mono",
        &_Magick_ColorMono_templ::_wrap_ColorMono__wrap_Magick_ColorMono_mono,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKPixel");
    staticMembers.insert({
      "CMYKPixel", StaticValue("CMYKPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKAPixel");
    staticMembers.insert({
      "CMYKAPixel", StaticValue("CMYKAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBPixel");
    staticMembers.insert({
      "RGBPixel", StaticValue("RGBPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBAPixel");
    staticMembers.insert({
      "RGBAPixel", StaticValue("RGBAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ColorRGB_templ : public _Magick_Color_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ColorRGB_templ(const Napi::CallbackInfo &);
_Magick_ColorRGB_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorRGB__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorRGB__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorRGB__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorRGB__SWIG_3(const Napi::CallbackInfo &);
virtual ~_Magick_ColorRGB_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_alpha__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_alpha__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorRGB__wrap_Magick_ColorRGB_alpha(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_blue__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_blue__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorRGB__wrap_Magick_ColorRGB_blue(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_green__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_green__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorRGB__wrap_Magick_ColorRGB_green(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_red__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorRGB_red__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorRGB__wrap_Magick_ColorRGB_red(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ColorRGB_inst : public _Magick_ColorRGB_templ<_Magick_ColorRGB_inst> {
public:
  using _Magick_ColorRGB_templ::_Magick_ColorRGB_templ;
  virtual ~_Magick_ColorRGB_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ColorRGB_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ColorRGB_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ColorRGB (_Magick_ColorRGB) */
// jsnapi_getclass
Napi::Function _Magick_ColorRGB_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ColorRGB_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ColorRGB_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ColorRGB_inst>::DefineClass(env, "ColorRGB", symbolTable);
}

void _Magick_ColorRGB_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ColorRGB_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ColorRGB_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_Color_templ<_Magick_Color_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_Color_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Color_templ::InstanceMethod("clone",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Color_templ::InstanceMethod("toString",
        &_Magick_Color_templ::_wrap_Magick_Color_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isFuzzyEquivalent");
  members.insert({
    "isFuzzyEquivalent",
      _Magick_Color_templ::InstanceMethod("isFuzzyEquivalent",
        &_Magick_Color_templ::_wrap_Magick_Color_isFuzzyEquivalent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Color_templ::InstanceMethod("isValid",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelType");
  members.insert({
    "pixelType",
      _Magick_Color_templ::InstanceMethod("pixelType",
        &_Magick_Color_templ::_wrap_Magick_Color_pixelType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumAlpha");
  members.insert({
    "quantumAlpha",
      _Magick_Color_templ::InstanceMethod("quantumAlpha",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlack");
  members.insert({
    "quantumBlack",
      _Magick_Color_templ::InstanceMethod("quantumBlack",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlack,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlue");
  members.insert({
    "quantumBlue",
      _Magick_Color_templ::InstanceMethod("quantumBlue",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumGreen");
  members.insert({
    "quantumGreen",
      _Magick_Color_templ::InstanceMethod("quantumGreen",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumGreen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumRed");
  members.insert({
    "quantumRed",
      _Magick_Color_templ::InstanceMethod("quantumRed",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumRed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_ColorRGB_templ::InstanceMethod("clone",
        &_Magick_ColorRGB_templ::_wrap_Magick_ColorRGB_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("alpha");
  members.insert({
    "alpha",
      _Magick_ColorRGB_templ::InstanceMethod("alpha",
        &_Magick_ColorRGB_templ::_wrap_ColorRGB__wrap_Magick_ColorRGB_alpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blue");
  members.insert({
    "blue",
      _Magick_ColorRGB_templ::InstanceMethod("blue",
        &_Magick_ColorRGB_templ::_wrap_ColorRGB__wrap_Magick_ColorRGB_blue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("green");
  members.insert({
    "green",
      _Magick_ColorRGB_templ::InstanceMethod("green",
        &_Magick_ColorRGB_templ::_wrap_ColorRGB__wrap_Magick_ColorRGB_green,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("red");
  members.insert({
    "red",
      _Magick_ColorRGB_templ::InstanceMethod("red",
        &_Magick_ColorRGB_templ::_wrap_ColorRGB__wrap_Magick_ColorRGB_red,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKPixel");
    staticMembers.insert({
      "CMYKPixel", StaticValue("CMYKPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKAPixel");
    staticMembers.insert({
      "CMYKAPixel", StaticValue("CMYKAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBPixel");
    staticMembers.insert({
      "RGBPixel", StaticValue("RGBPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBAPixel");
    staticMembers.insert({
      "RGBAPixel", StaticValue("RGBAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ColorYUV_templ : public _Magick_Color_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ColorYUV_templ(const Napi::CallbackInfo &);
_Magick_ColorYUV_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorYUV__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorYUV__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ColorYUV__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_ColorYUV_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorYUV_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorYUV_u__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorYUV_u__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorYUV__wrap_Magick_ColorYUV_u(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorYUV_v__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorYUV_v__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorYUV__wrap_Magick_ColorYUV_v(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorYUV_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ColorYUV_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ColorYUV__wrap_Magick_ColorYUV_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ColorYUV_inst : public _Magick_ColorYUV_templ<_Magick_ColorYUV_inst> {
public:
  using _Magick_ColorYUV_templ::_Magick_ColorYUV_templ;
  virtual ~_Magick_ColorYUV_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ColorYUV_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ColorYUV_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ColorYUV (_Magick_ColorYUV) */
// jsnapi_getclass
Napi::Function _Magick_ColorYUV_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ColorYUV_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ColorYUV_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ColorYUV_inst>::DefineClass(env, "ColorYUV", symbolTable);
}

void _Magick_ColorYUV_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ColorYUV_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ColorYUV_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_Color_templ<_Magick_Color_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_Color_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Color_templ::InstanceMethod("clone",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Color_templ::InstanceMethod("toString",
        &_Magick_Color_templ::_wrap_Magick_Color_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isFuzzyEquivalent");
  members.insert({
    "isFuzzyEquivalent",
      _Magick_Color_templ::InstanceMethod("isFuzzyEquivalent",
        &_Magick_Color_templ::_wrap_Magick_Color_isFuzzyEquivalent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Color_templ::InstanceMethod("isValid",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelType");
  members.insert({
    "pixelType",
      _Magick_Color_templ::InstanceMethod("pixelType",
        &_Magick_Color_templ::_wrap_Magick_Color_pixelType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumAlpha");
  members.insert({
    "quantumAlpha",
      _Magick_Color_templ::InstanceMethod("quantumAlpha",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlack");
  members.insert({
    "quantumBlack",
      _Magick_Color_templ::InstanceMethod("quantumBlack",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlack,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumBlue");
  members.insert({
    "quantumBlue",
      _Magick_Color_templ::InstanceMethod("quantumBlue",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumBlue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumGreen");
  members.insert({
    "quantumGreen",
      _Magick_Color_templ::InstanceMethod("quantumGreen",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumGreen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantumRed");
  members.insert({
    "quantumRed",
      _Magick_Color_templ::InstanceMethod("quantumRed",
        &_Magick_Color_templ::_wrap_Color__wrap_Magick_Color_quantumRed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_ColorYUV_templ::InstanceMethod("clone",
        &_Magick_ColorYUV_templ::_wrap_Magick_ColorYUV_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("u");
  members.insert({
    "u",
      _Magick_ColorYUV_templ::InstanceMethod("u",
        &_Magick_ColorYUV_templ::_wrap_ColorYUV__wrap_Magick_ColorYUV_u,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("v");
  members.insert({
    "v",
      _Magick_ColorYUV_templ::InstanceMethod("v",
        &_Magick_ColorYUV_templ::_wrap_ColorYUV__wrap_Magick_ColorYUV_v,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_ColorYUV_templ::InstanceMethod("y",
        &_Magick_ColorYUV_templ::_wrap_ColorYUV__wrap_Magick_ColorYUV_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKPixel");
    staticMembers.insert({
      "CMYKPixel", StaticValue("CMYKPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_CMYKAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("CMYKAPixel");
    staticMembers.insert({
      "CMYKAPixel", StaticValue("CMYKAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBPixel");
    staticMembers.insert({
      "RGBPixel", StaticValue("RGBPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_Color_RGBAPixel_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("RGBAPixel");
    staticMembers.insert({
      "RGBAPixel", StaticValue("RGBAPixel", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gt__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lt__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gte__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lte__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Geometry_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Geometry_templ(const Napi::CallbackInfo &);
_Magick_Geometry_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Geometry__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Geometry__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Geometry__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Geometry__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Geometry__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Geometry__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Geometry__SWIG_6(const Napi::CallbackInfo &);
virtual ~_Magick_Geometry_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_clone__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_clone__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_clone__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_toString(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_aspect__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_aspect__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_aspect(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_fillArea__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_fillArea__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_fillArea(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_greater__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_greater__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_greater(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_height__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_height__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_height(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_isValid__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_isValid__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_less__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_less__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_less(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_limitPixels__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_limitPixels__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_limitPixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_percent__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_percent__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_percent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_width__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_width__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_width(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_xOff__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_xOff__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_xOff(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_yOff__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_yOff__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_yOff(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Geometry_clone__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Geometry__wrap_Magick_Geometry_clone(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Geometry_inst : public _Magick_Geometry_templ<_Magick_Geometry_inst> {
public:
  using _Magick_Geometry_templ::_Magick_Geometry_templ;
  virtual ~_Magick_Geometry_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Geometry_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Geometry_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Geometry (_Magick_Geometry) */
// jsnapi_getclass
Napi::Function _Magick_Geometry_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Geometry_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Geometry_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Geometry_inst>::DefineClass(env, "Geometry", symbolTable);
}

void _Magick_Geometry_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Geometry_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Geometry_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Geometry_templ::InstanceMethod("toString",
        &_Magick_Geometry_templ::_wrap_Magick_Geometry_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("aspect");
  members.insert({
    "aspect",
      _Magick_Geometry_templ::InstanceMethod("aspect",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_aspect,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillArea");
  members.insert({
    "fillArea",
      _Magick_Geometry_templ::InstanceMethod("fillArea",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_fillArea,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("greater");
  members.insert({
    "greater",
      _Magick_Geometry_templ::InstanceMethod("greater",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_greater,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("height");
  members.insert({
    "height",
      _Magick_Geometry_templ::InstanceMethod("height",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_height,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Geometry_templ::InstanceMethod("isValid",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("less");
  members.insert({
    "less",
      _Magick_Geometry_templ::InstanceMethod("less",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_less,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("limitPixels");
  members.insert({
    "limitPixels",
      _Magick_Geometry_templ::InstanceMethod("limitPixels",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_limitPixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("percent");
  members.insert({
    "percent",
      _Magick_Geometry_templ::InstanceMethod("percent",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_percent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("width");
  members.insert({
    "width",
      _Magick_Geometry_templ::InstanceMethod("width",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_width,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("xOff");
  members.insert({
    "xOff",
      _Magick_Geometry_templ::InstanceMethod("xOff",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_xOff,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("yOff");
  members.insert({
    "yOff",
      _Magick_Geometry_templ::InstanceMethod("yOff",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_yOff,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Geometry_templ::InstanceMethod("clone",
        &_Magick_Geometry_templ::_wrap_Geometry__wrap_Magick_Geometry_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Offset_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Offset_templ(const Napi::CallbackInfo &);
_Magick_Offset_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Offset__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Offset__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Offset__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Offset__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Offset__SWIG_4(const Napi::CallbackInfo &);
virtual ~_Magick_Offset_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Offset_clone__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Offset_clone__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Offset_clone__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Offset__wrap_Magick_Offset_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Offset_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Offset_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Offset_inst : public _Magick_Offset_templ<_Magick_Offset_inst> {
public:
  using _Magick_Offset_templ::_Magick_Offset_templ;
  virtual ~_Magick_Offset_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Offset_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Offset_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Offset (_Magick_Offset) */
// jsnapi_getclass
Napi::Function _Magick_Offset_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Offset_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Offset_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Offset_inst>::DefineClass(env, "Offset", symbolTable);
}

void _Magick_Offset_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Offset_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Offset_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Offset_templ::InstanceMethod("clone",
        &_Magick_Offset_templ::_wrap_Offset__wrap_Magick_Offset_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_Offset_templ::InstanceMethod("x",
        &_Magick_Offset_templ::_wrap_Magick_Offset_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_Offset_templ::InstanceMethod("y",
        &_Magick_Offset_templ::_wrap_Magick_Offset_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Point_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Point_templ(const Napi::CallbackInfo &);
_Magick_Point_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Point__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Point__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Point__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Point__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Point__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Point__SWIG_5(const Napi::CallbackInfo &);
virtual ~_Magick_Point_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_clone__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_clone__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_clone__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_clone__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Point__wrap_Magick_Point_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_toString(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Point_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Point_inst : public _Magick_Point_templ<_Magick_Point_inst> {
public:
  using _Magick_Point_templ::_Magick_Point_templ;
  virtual ~_Magick_Point_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Point_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Point_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Point (_Magick_Point) */
// jsnapi_getclass
Napi::Function _Magick_Point_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Point_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Point_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Point_inst>::DefineClass(env, "Point", symbolTable);
}

void _Magick_Point_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Point_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Point_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Point_templ::InstanceMethod("clone",
        &_Magick_Point_templ::_wrap_Point__wrap_Magick_Point_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_Point_templ::InstanceMethod("toString",
        &_Magick_Point_templ::_wrap_Magick_Point_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Point_templ::InstanceMethod("isValid",
        &_Magick_Point_templ::_wrap_Magick_Point_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_Point_templ::InstanceMethod("x",
        &_Magick_Point_templ::_wrap_Magick_Point_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_Point_templ::InstanceMethod("y",
        &_Magick_Point_templ::_wrap_Magick_Point_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Coordinate_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Coordinate_templ(const Napi::CallbackInfo &);
_Magick_Coordinate_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Coordinate__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Coordinate__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_Coordinate_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Coordinate_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Coordinate_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Coordinate__wrap_Magick_Coordinate_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Coordinate_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Coordinate_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Coordinate__wrap_Magick_Coordinate_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Coordinate_inst : public _Magick_Coordinate_templ<_Magick_Coordinate_inst> {
public:
  using _Magick_Coordinate_templ::_Magick_Coordinate_templ;
  virtual ~_Magick_Coordinate_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Coordinate_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Coordinate_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Coordinate (_Magick_Coordinate) */
// jsnapi_getclass
Napi::Function _Magick_Coordinate_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Coordinate_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Coordinate_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Coordinate_inst>::DefineClass(env, "Coordinate", symbolTable);
}

void _Magick_Coordinate_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Coordinate_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Coordinate_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_Coordinate_templ::InstanceMethod("x",
        &_Magick_Coordinate_templ::_wrap_Coordinate__wrap_Magick_Coordinate_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_Coordinate_templ::InstanceMethod("y",
        &_Magick_Coordinate_templ::_wrap_Coordinate__wrap_Magick_Coordinate_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gt__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lt__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gte__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lte__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableBase_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableBase_templ(const Napi::CallbackInfo &);
_Magick_DrawableBase_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableBase(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableBase_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBase_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBase_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableBase_inst : public _Magick_DrawableBase_templ<_Magick_DrawableBase_inst> {
public:
  using _Magick_DrawableBase_templ::_Magick_DrawableBase_templ;
  virtual ~_Magick_DrawableBase_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableBase_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableBase_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableBase (_Magick_DrawableBase) */
// jsnapi_getclass
Napi::Function _Magick_DrawableBase_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableBase_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableBase_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableBase_inst>::DefineClass(env, "DrawableBase", symbolTable);
}

void _Magick_DrawableBase_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableBase_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableBase_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Drawable_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Drawable_templ(const Napi::CallbackInfo &);
_Magick_Drawable_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Drawable__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Drawable__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_Drawable_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Drawable__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Drawable_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Drawable_call(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Drawable_inst : public _Magick_Drawable_templ<_Magick_Drawable_inst> {
public:
  using _Magick_Drawable_templ::_Magick_Drawable_templ;
  virtual ~_Magick_Drawable_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Drawable_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Drawable_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Drawable (_Magick_Drawable) */
// jsnapi_getclass
Napi::Function _Magick_Drawable_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Drawable_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Drawable_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Drawable_inst>::DefineClass(env, "Drawable", symbolTable);
}

void _Magick_Drawable_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Drawable_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Drawable_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Drawable_templ::InstanceMethod("clone",
        &_Magick_Drawable_templ::_wrap_Magick_Drawable_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_Drawable_templ::InstanceMethod("call",
        &_Magick_Drawable_templ::_wrap_Magick_Drawable_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_VPathBase_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_VPathBase_templ(const Napi::CallbackInfo &);
_Magick_VPathBase_templ(bool, const Napi::CallbackInfo &);
virtual ~_Magick_VPathBase_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_VPathBase_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_VPathBase_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_VPathBase_inst : public _Magick_VPathBase_templ<_Magick_VPathBase_inst> {
public:
  using _Magick_VPathBase_templ::_Magick_VPathBase_templ;
  virtual ~_Magick_VPathBase_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_VPathBase_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_VPathBase_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: VPathBase (_Magick_VPathBase) */
// jsnapi_getclass
Napi::Function _Magick_VPathBase_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_VPathBase_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_VPathBase_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_VPathBase_inst>::DefineClass(env, "VPathBase", symbolTable);
}

void _Magick_VPathBase_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_VPathBase_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_VPathBase_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_VPath_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_VPath_templ(const Napi::CallbackInfo &);
_Magick_VPath_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_VPath__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_VPath__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_VPath_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_VPath__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_VPath_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_VPath_call(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_VPath_inst : public _Magick_VPath_templ<_Magick_VPath_inst> {
public:
  using _Magick_VPath_templ::_Magick_VPath_templ;
  virtual ~_Magick_VPath_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_VPath_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_VPath_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: VPath (_Magick_VPath) */
// jsnapi_getclass
Napi::Function _Magick_VPath_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_VPath_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_VPath_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_VPath_inst>::DefineClass(env, "VPath", symbolTable);
}

void _Magick_VPath_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_VPath_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_VPath_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_VPath_templ::InstanceMethod("clone",
        &_Magick_VPath_templ::_wrap_Magick_VPath_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPath_templ::InstanceMethod("call",
        &_Magick_VPath_templ::_wrap_Magick_VPath_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableAffine_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableAffine_templ(const Napi::CallbackInfo &);
_Magick_DrawableAffine_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableAffine__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableAffine__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableAffine_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_sx__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_sx__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAffine__wrap_Magick_DrawableAffine_sx(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_sy__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_sy__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAffine__wrap_Magick_DrawableAffine_sy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_rx__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_rx__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAffine__wrap_Magick_DrawableAffine_rx(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_ry__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_ry__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAffine__wrap_Magick_DrawableAffine_ry(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_tx__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_tx__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAffine__wrap_Magick_DrawableAffine_tx(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_ty__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAffine_ty__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAffine__wrap_Magick_DrawableAffine_ty(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableAffine_inst : public _Magick_DrawableAffine_templ<_Magick_DrawableAffine_inst> {
public:
  using _Magick_DrawableAffine_templ::_Magick_DrawableAffine_templ;
  virtual ~_Magick_DrawableAffine_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableAffine_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableAffine_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableAffine (_Magick_DrawableAffine) */
// jsnapi_getclass
Napi::Function _Magick_DrawableAffine_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableAffine_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableAffine_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableAffine_inst>::DefineClass(env, "DrawableAffine", symbolTable);
}

void _Magick_DrawableAffine_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableAffine_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableAffine_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableAffine_templ::InstanceMethod("call",
        &_Magick_DrawableAffine_templ::_wrap_Magick_DrawableAffine_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableAffine_templ::InstanceMethod("copy",
        &_Magick_DrawableAffine_templ::_wrap_Magick_DrawableAffine_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sx");
  members.insert({
    "sx",
      _Magick_DrawableAffine_templ::InstanceMethod("sx",
        &_Magick_DrawableAffine_templ::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_sx,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sy");
  members.insert({
    "sy",
      _Magick_DrawableAffine_templ::InstanceMethod("sy",
        &_Magick_DrawableAffine_templ::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_sy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rx");
  members.insert({
    "rx",
      _Magick_DrawableAffine_templ::InstanceMethod("rx",
        &_Magick_DrawableAffine_templ::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_rx,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ry");
  members.insert({
    "ry",
      _Magick_DrawableAffine_templ::InstanceMethod("ry",
        &_Magick_DrawableAffine_templ::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_ry,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("tx");
  members.insert({
    "tx",
      _Magick_DrawableAffine_templ::InstanceMethod("tx",
        &_Magick_DrawableAffine_templ::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_tx,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ty");
  members.insert({
    "ty",
      _Magick_DrawableAffine_templ::InstanceMethod("ty",
        &_Magick_DrawableAffine_templ::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_ty,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableAlpha_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableAlpha_templ(const Napi::CallbackInfo &);
_Magick_DrawableAlpha_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableAlpha(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableAlpha_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_y(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_paintMethod__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableAlpha_paintMethod__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_paintMethod(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableAlpha_inst : public _Magick_DrawableAlpha_templ<_Magick_DrawableAlpha_inst> {
public:
  using _Magick_DrawableAlpha_templ::_Magick_DrawableAlpha_templ;
  virtual ~_Magick_DrawableAlpha_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableAlpha_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableAlpha_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableAlpha (_Magick_DrawableAlpha) */
// jsnapi_getclass
Napi::Function _Magick_DrawableAlpha_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableAlpha_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableAlpha_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableAlpha_inst>::DefineClass(env, "DrawableAlpha", symbolTable);
}

void _Magick_DrawableAlpha_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableAlpha_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableAlpha_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableAlpha_templ::InstanceMethod("call",
        &_Magick_DrawableAlpha_templ::_wrap_Magick_DrawableAlpha_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableAlpha_templ::InstanceMethod("copy",
        &_Magick_DrawableAlpha_templ::_wrap_Magick_DrawableAlpha_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_DrawableAlpha_templ::InstanceMethod("x",
        &_Magick_DrawableAlpha_templ::_wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_DrawableAlpha_templ::InstanceMethod("y",
        &_Magick_DrawableAlpha_templ::_wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("paintMethod");
  members.insert({
    "paintMethod",
      _Magick_DrawableAlpha_templ::InstanceMethod("paintMethod",
        &_Magick_DrawableAlpha_templ::_wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_paintMethod,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableArc_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableArc_templ(const Napi::CallbackInfo &);
_Magick_DrawableArc_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableArc(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableArc_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_startX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_startX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableArc__wrap_Magick_DrawableArc_startX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_startY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_startY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableArc__wrap_Magick_DrawableArc_startY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_endX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_endX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableArc__wrap_Magick_DrawableArc_endX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_endY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_endY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableArc__wrap_Magick_DrawableArc_endY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_startDegrees__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_startDegrees__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableArc__wrap_Magick_DrawableArc_startDegrees(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_endDegrees__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableArc_endDegrees__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableArc__wrap_Magick_DrawableArc_endDegrees(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableArc_inst : public _Magick_DrawableArc_templ<_Magick_DrawableArc_inst> {
public:
  using _Magick_DrawableArc_templ::_Magick_DrawableArc_templ;
  virtual ~_Magick_DrawableArc_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableArc_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableArc_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableArc (_Magick_DrawableArc) */
// jsnapi_getclass
Napi::Function _Magick_DrawableArc_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableArc_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableArc_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableArc_inst>::DefineClass(env, "DrawableArc", symbolTable);
}

void _Magick_DrawableArc_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableArc_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableArc_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableArc_templ::InstanceMethod("call",
        &_Magick_DrawableArc_templ::_wrap_Magick_DrawableArc_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableArc_templ::InstanceMethod("copy",
        &_Magick_DrawableArc_templ::_wrap_Magick_DrawableArc_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("startX");
  members.insert({
    "startX",
      _Magick_DrawableArc_templ::InstanceMethod("startX",
        &_Magick_DrawableArc_templ::_wrap_DrawableArc__wrap_Magick_DrawableArc_startX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("startY");
  members.insert({
    "startY",
      _Magick_DrawableArc_templ::InstanceMethod("startY",
        &_Magick_DrawableArc_templ::_wrap_DrawableArc__wrap_Magick_DrawableArc_startY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("endX");
  members.insert({
    "endX",
      _Magick_DrawableArc_templ::InstanceMethod("endX",
        &_Magick_DrawableArc_templ::_wrap_DrawableArc__wrap_Magick_DrawableArc_endX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("endY");
  members.insert({
    "endY",
      _Magick_DrawableArc_templ::InstanceMethod("endY",
        &_Magick_DrawableArc_templ::_wrap_DrawableArc__wrap_Magick_DrawableArc_endY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("startDegrees");
  members.insert({
    "startDegrees",
      _Magick_DrawableArc_templ::InstanceMethod("startDegrees",
        &_Magick_DrawableArc_templ::_wrap_DrawableArc__wrap_Magick_DrawableArc_startDegrees,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("endDegrees");
  members.insert({
    "endDegrees",
      _Magick_DrawableArc_templ::InstanceMethod("endDegrees",
        &_Magick_DrawableArc_templ::_wrap_DrawableArc__wrap_Magick_DrawableArc_endDegrees,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableBezier_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableBezier_templ(const Napi::CallbackInfo &);
_Magick_DrawableBezier_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableBezier__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableBezier__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableBezier_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBezier_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBezier_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableBezier_inst : public _Magick_DrawableBezier_templ<_Magick_DrawableBezier_inst> {
public:
  using _Magick_DrawableBezier_templ::_Magick_DrawableBezier_templ;
  virtual ~_Magick_DrawableBezier_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableBezier_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableBezier_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableBezier (_Magick_DrawableBezier) */
// jsnapi_getclass
Napi::Function _Magick_DrawableBezier_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableBezier_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableBezier_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableBezier_inst>::DefineClass(env, "DrawableBezier", symbolTable);
}

void _Magick_DrawableBezier_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableBezier_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableBezier_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBezier_templ::InstanceMethod("call",
        &_Magick_DrawableBezier_templ::_wrap_Magick_DrawableBezier_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBezier_templ::InstanceMethod("copy",
        &_Magick_DrawableBezier_templ::_wrap_Magick_DrawableBezier_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableBorderColor_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableBorderColor_templ(const Napi::CallbackInfo &);
_Magick_DrawableBorderColor_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableBorderColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableBorderColor__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableBorderColor_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBorderColor_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBorderColor_color__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBorderColor_color__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableBorderColor__wrap_Magick_DrawableBorderColor_color(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableBorderColor_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableBorderColor_inst : public _Magick_DrawableBorderColor_templ<_Magick_DrawableBorderColor_inst> {
public:
  using _Magick_DrawableBorderColor_templ::_Magick_DrawableBorderColor_templ;
  virtual ~_Magick_DrawableBorderColor_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableBorderColor_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableBorderColor_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableBorderColor (_Magick_DrawableBorderColor) */
// jsnapi_getclass
Napi::Function _Magick_DrawableBorderColor_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableBorderColor_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableBorderColor_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableBorderColor_inst>::DefineClass(env, "DrawableBorderColor", symbolTable);
}

void _Magick_DrawableBorderColor_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableBorderColor_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableBorderColor_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBorderColor_templ::InstanceMethod("call",
        &_Magick_DrawableBorderColor_templ::_wrap_Magick_DrawableBorderColor_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("color");
  members.insert({
    "color",
      _Magick_DrawableBorderColor_templ::InstanceMethod("color",
        &_Magick_DrawableBorderColor_templ::_wrap_DrawableBorderColor__wrap_Magick_DrawableBorderColor_color,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBorderColor_templ::InstanceMethod("copy",
        &_Magick_DrawableBorderColor_templ::_wrap_Magick_DrawableBorderColor_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableClipRule_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableClipRule_templ(const Napi::CallbackInfo &);
_Magick_DrawableClipRule_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableClipRule(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableClipRule_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipRule_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipRule_fillRule__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipRule_fillRule__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableClipRule__wrap_Magick_DrawableClipRule_fillRule(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipRule_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableClipRule_inst : public _Magick_DrawableClipRule_templ<_Magick_DrawableClipRule_inst> {
public:
  using _Magick_DrawableClipRule_templ::_Magick_DrawableClipRule_templ;
  virtual ~_Magick_DrawableClipRule_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableClipRule_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableClipRule_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableClipRule (_Magick_DrawableClipRule) */
// jsnapi_getclass
Napi::Function _Magick_DrawableClipRule_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableClipRule_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableClipRule_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableClipRule_inst>::DefineClass(env, "DrawableClipRule", symbolTable);
}

void _Magick_DrawableClipRule_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableClipRule_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableClipRule_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableClipRule_templ::InstanceMethod("call",
        &_Magick_DrawableClipRule_templ::_wrap_Magick_DrawableClipRule_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillRule");
  members.insert({
    "fillRule",
      _Magick_DrawableClipRule_templ::InstanceMethod("fillRule",
        &_Magick_DrawableClipRule_templ::_wrap_DrawableClipRule__wrap_Magick_DrawableClipRule_fillRule,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableClipRule_templ::InstanceMethod("copy",
        &_Magick_DrawableClipRule_templ::_wrap_Magick_DrawableClipRule_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableClipUnits_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableClipUnits_templ(const Napi::CallbackInfo &);
_Magick_DrawableClipUnits_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableClipUnits(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableClipUnits_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipUnits_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipUnits_units__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipUnits_units__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableClipUnits__wrap_Magick_DrawableClipUnits_units(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipUnits_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableClipUnits_inst : public _Magick_DrawableClipUnits_templ<_Magick_DrawableClipUnits_inst> {
public:
  using _Magick_DrawableClipUnits_templ::_Magick_DrawableClipUnits_templ;
  virtual ~_Magick_DrawableClipUnits_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableClipUnits_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableClipUnits_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableClipUnits (_Magick_DrawableClipUnits) */
// jsnapi_getclass
Napi::Function _Magick_DrawableClipUnits_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableClipUnits_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableClipUnits_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableClipUnits_inst>::DefineClass(env, "DrawableClipUnits", symbolTable);
}

void _Magick_DrawableClipUnits_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableClipUnits_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableClipUnits_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableClipUnits_templ::InstanceMethod("call",
        &_Magick_DrawableClipUnits_templ::_wrap_Magick_DrawableClipUnits_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("units");
  members.insert({
    "units",
      _Magick_DrawableClipUnits_templ::InstanceMethod("units",
        &_Magick_DrawableClipUnits_templ::_wrap_DrawableClipUnits__wrap_Magick_DrawableClipUnits_units,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableClipUnits_templ::InstanceMethod("copy",
        &_Magick_DrawableClipUnits_templ::_wrap_Magick_DrawableClipUnits_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePopClipPath_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePopClipPath_templ(const Napi::CallbackInfo &);
_Magick_DrawablePopClipPath_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePopClipPath(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePopClipPath_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePopClipPath_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePopClipPath_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePopClipPath_inst : public _Magick_DrawablePopClipPath_templ<_Magick_DrawablePopClipPath_inst> {
public:
  using _Magick_DrawablePopClipPath_templ::_Magick_DrawablePopClipPath_templ;
  virtual ~_Magick_DrawablePopClipPath_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePopClipPath_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePopClipPath_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePopClipPath (_Magick_DrawablePopClipPath) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePopClipPath_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePopClipPath_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePopClipPath_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePopClipPath_inst>::DefineClass(env, "DrawablePopClipPath", symbolTable);
}

void _Magick_DrawablePopClipPath_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePopClipPath_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePopClipPath_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePopClipPath_templ::InstanceMethod("call",
        &_Magick_DrawablePopClipPath_templ::_wrap_Magick_DrawablePopClipPath_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePopClipPath_templ::InstanceMethod("copy",
        &_Magick_DrawablePopClipPath_templ::_wrap_Magick_DrawablePopClipPath_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePushClipPath_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePushClipPath_templ(const Napi::CallbackInfo &);
_Magick_DrawablePushClipPath_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePushClipPath__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePushClipPath__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePushClipPath_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePushClipPath_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePushClipPath_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePushClipPath_inst : public _Magick_DrawablePushClipPath_templ<_Magick_DrawablePushClipPath_inst> {
public:
  using _Magick_DrawablePushClipPath_templ::_Magick_DrawablePushClipPath_templ;
  virtual ~_Magick_DrawablePushClipPath_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePushClipPath_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePushClipPath_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePushClipPath (_Magick_DrawablePushClipPath) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePushClipPath_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePushClipPath_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePushClipPath_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePushClipPath_inst>::DefineClass(env, "DrawablePushClipPath", symbolTable);
}

void _Magick_DrawablePushClipPath_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePushClipPath_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePushClipPath_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePushClipPath_templ::InstanceMethod("call",
        &_Magick_DrawablePushClipPath_templ::_wrap_Magick_DrawablePushClipPath_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePushClipPath_templ::InstanceMethod("copy",
        &_Magick_DrawablePushClipPath_templ::_wrap_Magick_DrawablePushClipPath_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableClipPath_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableClipPath_templ(const Napi::CallbackInfo &);
_Magick_DrawableClipPath_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableClipPath__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableClipPath__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableClipPath_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipPath_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipPath_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipPath_clip_path__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableClipPath_clip_path__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableClipPath__wrap_Magick_DrawableClipPath_clip_path(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableClipPath_inst : public _Magick_DrawableClipPath_templ<_Magick_DrawableClipPath_inst> {
public:
  using _Magick_DrawableClipPath_templ::_Magick_DrawableClipPath_templ;
  virtual ~_Magick_DrawableClipPath_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableClipPath_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableClipPath_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableClipPath (_Magick_DrawableClipPath) */
// jsnapi_getclass
Napi::Function _Magick_DrawableClipPath_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableClipPath_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableClipPath_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableClipPath_inst>::DefineClass(env, "DrawableClipPath", symbolTable);
}

void _Magick_DrawableClipPath_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableClipPath_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableClipPath_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableClipPath_templ::InstanceMethod("call",
        &_Magick_DrawableClipPath_templ::_wrap_Magick_DrawableClipPath_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableClipPath_templ::InstanceMethod("copy",
        &_Magick_DrawableClipPath_templ::_wrap_Magick_DrawableClipPath_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clip_path");
  members.insert({
    "clip_path",
      _Magick_DrawableClipPath_templ::InstanceMethod("clip_path",
        &_Magick_DrawableClipPath_templ::_wrap_DrawableClipPath__wrap_Magick_DrawableClipPath_clip_path,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableCircle_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableCircle_templ(const Napi::CallbackInfo &);
_Magick_DrawableCircle_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCircle(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableCircle_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_originX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_originX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCircle__wrap_Magick_DrawableCircle_originX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_originY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_originY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCircle__wrap_Magick_DrawableCircle_originY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_perimX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_perimX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCircle__wrap_Magick_DrawableCircle_perimX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_perimY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCircle_perimY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCircle__wrap_Magick_DrawableCircle_perimY(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableCircle_inst : public _Magick_DrawableCircle_templ<_Magick_DrawableCircle_inst> {
public:
  using _Magick_DrawableCircle_templ::_Magick_DrawableCircle_templ;
  virtual ~_Magick_DrawableCircle_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableCircle_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableCircle_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableCircle (_Magick_DrawableCircle) */
// jsnapi_getclass
Napi::Function _Magick_DrawableCircle_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableCircle_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableCircle_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableCircle_inst>::DefineClass(env, "DrawableCircle", symbolTable);
}

void _Magick_DrawableCircle_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableCircle_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableCircle_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableCircle_templ::InstanceMethod("call",
        &_Magick_DrawableCircle_templ::_wrap_Magick_DrawableCircle_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableCircle_templ::InstanceMethod("copy",
        &_Magick_DrawableCircle_templ::_wrap_Magick_DrawableCircle_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("originX");
  members.insert({
    "originX",
      _Magick_DrawableCircle_templ::InstanceMethod("originX",
        &_Magick_DrawableCircle_templ::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_originX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("originY");
  members.insert({
    "originY",
      _Magick_DrawableCircle_templ::InstanceMethod("originY",
        &_Magick_DrawableCircle_templ::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_originY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perimX");
  members.insert({
    "perimX",
      _Magick_DrawableCircle_templ::InstanceMethod("perimX",
        &_Magick_DrawableCircle_templ::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_perimX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perimY");
  members.insert({
    "perimY",
      _Magick_DrawableCircle_templ::InstanceMethod("perimY",
        &_Magick_DrawableCircle_templ::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_perimY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableColor_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableColor_templ(const Napi::CallbackInfo &);
_Magick_DrawableColor_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableColor(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableColor_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableColor__wrap_Magick_DrawableColor_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableColor__wrap_Magick_DrawableColor_y(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_paintMethod__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableColor_paintMethod__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableColor__wrap_Magick_DrawableColor_paintMethod(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableColor_inst : public _Magick_DrawableColor_templ<_Magick_DrawableColor_inst> {
public:
  using _Magick_DrawableColor_templ::_Magick_DrawableColor_templ;
  virtual ~_Magick_DrawableColor_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableColor_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableColor_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableColor (_Magick_DrawableColor) */
// jsnapi_getclass
Napi::Function _Magick_DrawableColor_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableColor_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableColor_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableColor_inst>::DefineClass(env, "DrawableColor", symbolTable);
}

void _Magick_DrawableColor_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableColor_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableColor_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableColor_templ::InstanceMethod("call",
        &_Magick_DrawableColor_templ::_wrap_Magick_DrawableColor_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableColor_templ::InstanceMethod("copy",
        &_Magick_DrawableColor_templ::_wrap_Magick_DrawableColor_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_DrawableColor_templ::InstanceMethod("x",
        &_Magick_DrawableColor_templ::_wrap_DrawableColor__wrap_Magick_DrawableColor_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_DrawableColor_templ::InstanceMethod("y",
        &_Magick_DrawableColor_templ::_wrap_DrawableColor__wrap_Magick_DrawableColor_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("paintMethod");
  members.insert({
    "paintMethod",
      _Magick_DrawableColor_templ::InstanceMethod("paintMethod",
        &_Magick_DrawableColor_templ::_wrap_DrawableColor__wrap_Magick_DrawableColor_paintMethod,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableCompositeImage_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableCompositeImage_templ(const Napi::CallbackInfo &);
_Magick_DrawableCompositeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCompositeImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCompositeImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCompositeImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCompositeImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCompositeImage__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCompositeImage__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableCompositeImage__SWIG_6(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableCompositeImage_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_composition__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_composition__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_composition(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_filename__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_filename__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_filename(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_y(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_width__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_width__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_width(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_height__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_height__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_height(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_image__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_image__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_image(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_magick__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableCompositeImage_magick__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_magick(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableCompositeImage_inst : public _Magick_DrawableCompositeImage_templ<_Magick_DrawableCompositeImage_inst> {
public:
  using _Magick_DrawableCompositeImage_templ::_Magick_DrawableCompositeImage_templ;
  virtual ~_Magick_DrawableCompositeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableCompositeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableCompositeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableCompositeImage (_Magick_DrawableCompositeImage) */
// jsnapi_getclass
Napi::Function _Magick_DrawableCompositeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableCompositeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableCompositeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableCompositeImage_inst>::DefineClass(env, "DrawableCompositeImage", symbolTable);
}

void _Magick_DrawableCompositeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableCompositeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableCompositeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("clone",
        &_Magick_DrawableCompositeImage_templ::_wrap_Magick_DrawableCompositeImage_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("call",
        &_Magick_DrawableCompositeImage_templ::_wrap_Magick_DrawableCompositeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("copy",
        &_Magick_DrawableCompositeImage_templ::_wrap_Magick_DrawableCompositeImage_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("composition");
  members.insert({
    "composition",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("composition",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_composition,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("filename");
  members.insert({
    "filename",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("filename",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_filename,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("x",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("y",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("width");
  members.insert({
    "width",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("width",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_width,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("height");
  members.insert({
    "height",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("height",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_height,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("image");
  members.insert({
    "image",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("image",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_image,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("magick");
  members.insert({
    "magick",
      _Magick_DrawableCompositeImage_templ::InstanceMethod("magick",
        &_Magick_DrawableCompositeImage_templ::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_magick,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableDensity_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableDensity_templ(const Napi::CallbackInfo &);
_Magick_DrawableDensity_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableDensity__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableDensity__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableDensity_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableDensity_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableDensity_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableDensity_inst : public _Magick_DrawableDensity_templ<_Magick_DrawableDensity_inst> {
public:
  using _Magick_DrawableDensity_templ::_Magick_DrawableDensity_templ;
  virtual ~_Magick_DrawableDensity_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableDensity_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableDensity_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableDensity (_Magick_DrawableDensity) */
// jsnapi_getclass
Napi::Function _Magick_DrawableDensity_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableDensity_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableDensity_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableDensity_inst>::DefineClass(env, "DrawableDensity", symbolTable);
}

void _Magick_DrawableDensity_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableDensity_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableDensity_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableDensity_templ::InstanceMethod("call",
        &_Magick_DrawableDensity_templ::_wrap_Magick_DrawableDensity_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableDensity_templ::InstanceMethod("copy",
        &_Magick_DrawableDensity_templ::_wrap_Magick_DrawableDensity_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableEllipse_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableEllipse_templ(const Napi::CallbackInfo &);
_Magick_DrawableEllipse_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableEllipse(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableEllipse_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_originX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_originX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_originX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_originY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_originY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_originY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_radiusX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_radiusX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_radiusX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_radiusY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_radiusY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_radiusY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_arcStart__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_arcStart__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_arcStart(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_arcEnd__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableEllipse_arcEnd__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_arcEnd(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableEllipse_inst : public _Magick_DrawableEllipse_templ<_Magick_DrawableEllipse_inst> {
public:
  using _Magick_DrawableEllipse_templ::_Magick_DrawableEllipse_templ;
  virtual ~_Magick_DrawableEllipse_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableEllipse_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableEllipse_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableEllipse (_Magick_DrawableEllipse) */
// jsnapi_getclass
Napi::Function _Magick_DrawableEllipse_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableEllipse_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableEllipse_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableEllipse_inst>::DefineClass(env, "DrawableEllipse", symbolTable);
}

void _Magick_DrawableEllipse_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableEllipse_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableEllipse_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableEllipse_templ::InstanceMethod("call",
        &_Magick_DrawableEllipse_templ::_wrap_Magick_DrawableEllipse_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableEllipse_templ::InstanceMethod("copy",
        &_Magick_DrawableEllipse_templ::_wrap_Magick_DrawableEllipse_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("originX");
  members.insert({
    "originX",
      _Magick_DrawableEllipse_templ::InstanceMethod("originX",
        &_Magick_DrawableEllipse_templ::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_originX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("originY");
  members.insert({
    "originY",
      _Magick_DrawableEllipse_templ::InstanceMethod("originY",
        &_Magick_DrawableEllipse_templ::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_originY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("radiusX");
  members.insert({
    "radiusX",
      _Magick_DrawableEllipse_templ::InstanceMethod("radiusX",
        &_Magick_DrawableEllipse_templ::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_radiusX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("radiusY");
  members.insert({
    "radiusY",
      _Magick_DrawableEllipse_templ::InstanceMethod("radiusY",
        &_Magick_DrawableEllipse_templ::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_radiusY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("arcStart");
  members.insert({
    "arcStart",
      _Magick_DrawableEllipse_templ::InstanceMethod("arcStart",
        &_Magick_DrawableEllipse_templ::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_arcStart,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("arcEnd");
  members.insert({
    "arcEnd",
      _Magick_DrawableEllipse_templ::InstanceMethod("arcEnd",
        &_Magick_DrawableEllipse_templ::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_arcEnd,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableFillColor_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableFillColor_templ(const Napi::CallbackInfo &);
_Magick_DrawableFillColor_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFillColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFillColor__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableFillColor_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillColor_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillColor_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillColor_color__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillColor_color__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableFillColor__wrap_Magick_DrawableFillColor_color(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableFillColor_inst : public _Magick_DrawableFillColor_templ<_Magick_DrawableFillColor_inst> {
public:
  using _Magick_DrawableFillColor_templ::_Magick_DrawableFillColor_templ;
  virtual ~_Magick_DrawableFillColor_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableFillColor_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableFillColor_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableFillColor (_Magick_DrawableFillColor) */
// jsnapi_getclass
Napi::Function _Magick_DrawableFillColor_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableFillColor_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableFillColor_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableFillColor_inst>::DefineClass(env, "DrawableFillColor", symbolTable);
}

void _Magick_DrawableFillColor_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableFillColor_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableFillColor_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableFillColor_templ::InstanceMethod("call",
        &_Magick_DrawableFillColor_templ::_wrap_Magick_DrawableFillColor_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableFillColor_templ::InstanceMethod("copy",
        &_Magick_DrawableFillColor_templ::_wrap_Magick_DrawableFillColor_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("color");
  members.insert({
    "color",
      _Magick_DrawableFillColor_templ::InstanceMethod("color",
        &_Magick_DrawableFillColor_templ::_wrap_DrawableFillColor__wrap_Magick_DrawableFillColor_color,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableFillPatternUrl_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableFillPatternUrl_templ(const Napi::CallbackInfo &);
_Magick_DrawableFillPatternUrl_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFillPatternUrl__SWIG_0(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableFillPatternUrl_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFillPatternUrl__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillPatternUrl_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillPatternUrl_url__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillPatternUrl_url__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableFillPatternUrl__wrap_Magick_DrawableFillPatternUrl_url(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillPatternUrl_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableFillPatternUrl_inst : public _Magick_DrawableFillPatternUrl_templ<_Magick_DrawableFillPatternUrl_inst> {
public:
  using _Magick_DrawableFillPatternUrl_templ::_Magick_DrawableFillPatternUrl_templ;
  virtual ~_Magick_DrawableFillPatternUrl_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableFillPatternUrl_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableFillPatternUrl_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableFillPatternUrl (_Magick_DrawableFillPatternUrl) */
// jsnapi_getclass
Napi::Function _Magick_DrawableFillPatternUrl_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableFillPatternUrl_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableFillPatternUrl_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableFillPatternUrl_inst>::DefineClass(env, "DrawableFillPatternUrl", symbolTable);
}

void _Magick_DrawableFillPatternUrl_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableFillPatternUrl_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableFillPatternUrl_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableFillPatternUrl_templ::InstanceMethod("call",
        &_Magick_DrawableFillPatternUrl_templ::_wrap_Magick_DrawableFillPatternUrl_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("url");
  members.insert({
    "url",
      _Magick_DrawableFillPatternUrl_templ::InstanceMethod("url",
        &_Magick_DrawableFillPatternUrl_templ::_wrap_DrawableFillPatternUrl__wrap_Magick_DrawableFillPatternUrl_url,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableFillPatternUrl_templ::InstanceMethod("copy",
        &_Magick_DrawableFillPatternUrl_templ::_wrap_Magick_DrawableFillPatternUrl_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableFillRule_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableFillRule_templ(const Napi::CallbackInfo &);
_Magick_DrawableFillRule_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFillRule(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableFillRule_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillRule_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillRule_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillRule_fillRule__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillRule_fillRule__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableFillRule__wrap_Magick_DrawableFillRule_fillRule(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableFillRule_inst : public _Magick_DrawableFillRule_templ<_Magick_DrawableFillRule_inst> {
public:
  using _Magick_DrawableFillRule_templ::_Magick_DrawableFillRule_templ;
  virtual ~_Magick_DrawableFillRule_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableFillRule_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableFillRule_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableFillRule (_Magick_DrawableFillRule) */
// jsnapi_getclass
Napi::Function _Magick_DrawableFillRule_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableFillRule_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableFillRule_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableFillRule_inst>::DefineClass(env, "DrawableFillRule", symbolTable);
}

void _Magick_DrawableFillRule_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableFillRule_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableFillRule_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableFillRule_templ::InstanceMethod("call",
        &_Magick_DrawableFillRule_templ::_wrap_Magick_DrawableFillRule_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableFillRule_templ::InstanceMethod("copy",
        &_Magick_DrawableFillRule_templ::_wrap_Magick_DrawableFillRule_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillRule");
  members.insert({
    "fillRule",
      _Magick_DrawableFillRule_templ::InstanceMethod("fillRule",
        &_Magick_DrawableFillRule_templ::_wrap_DrawableFillRule__wrap_Magick_DrawableFillRule_fillRule,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableFillOpacity_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableFillOpacity_templ(const Napi::CallbackInfo &);
_Magick_DrawableFillOpacity_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFillOpacity(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableFillOpacity_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillOpacity_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillOpacity_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillOpacity_opacity__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFillOpacity_opacity__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableFillOpacity__wrap_Magick_DrawableFillOpacity_opacity(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableFillOpacity_inst : public _Magick_DrawableFillOpacity_templ<_Magick_DrawableFillOpacity_inst> {
public:
  using _Magick_DrawableFillOpacity_templ::_Magick_DrawableFillOpacity_templ;
  virtual ~_Magick_DrawableFillOpacity_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableFillOpacity_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableFillOpacity_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableFillOpacity (_Magick_DrawableFillOpacity) */
// jsnapi_getclass
Napi::Function _Magick_DrawableFillOpacity_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableFillOpacity_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableFillOpacity_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableFillOpacity_inst>::DefineClass(env, "DrawableFillOpacity", symbolTable);
}

void _Magick_DrawableFillOpacity_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableFillOpacity_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableFillOpacity_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableFillOpacity_templ::InstanceMethod("call",
        &_Magick_DrawableFillOpacity_templ::_wrap_Magick_DrawableFillOpacity_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableFillOpacity_templ::InstanceMethod("copy",
        &_Magick_DrawableFillOpacity_templ::_wrap_Magick_DrawableFillOpacity_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("opacity");
  members.insert({
    "opacity",
      _Magick_DrawableFillOpacity_templ::InstanceMethod("opacity",
        &_Magick_DrawableFillOpacity_templ::_wrap_DrawableFillOpacity__wrap_Magick_DrawableFillOpacity_opacity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableFont_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableFont_templ(const Napi::CallbackInfo &);
_Magick_DrawableFont_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFont__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFont__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableFont__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableFont_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFont_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFont_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFont_font__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableFont_font__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableFont__wrap_Magick_DrawableFont_font(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableFont_inst : public _Magick_DrawableFont_templ<_Magick_DrawableFont_inst> {
public:
  using _Magick_DrawableFont_templ::_Magick_DrawableFont_templ;
  virtual ~_Magick_DrawableFont_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableFont_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableFont_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableFont (_Magick_DrawableFont) */
// jsnapi_getclass
Napi::Function _Magick_DrawableFont_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableFont_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableFont_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableFont_inst>::DefineClass(env, "DrawableFont", symbolTable);
}

void _Magick_DrawableFont_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableFont_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableFont_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableFont_templ::InstanceMethod("call",
        &_Magick_DrawableFont_templ::_wrap_Magick_DrawableFont_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableFont_templ::InstanceMethod("copy",
        &_Magick_DrawableFont_templ::_wrap_Magick_DrawableFont_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("font");
  members.insert({
    "font",
      _Magick_DrawableFont_templ::InstanceMethod("font",
        &_Magick_DrawableFont_templ::_wrap_DrawableFont__wrap_Magick_DrawableFont_font,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableGravity_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableGravity_templ(const Napi::CallbackInfo &);
_Magick_DrawableGravity_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableGravity(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableGravity_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableGravity_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableGravity_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableGravity_gravity__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableGravity_gravity__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableGravity__wrap_Magick_DrawableGravity_gravity(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableGravity_inst : public _Magick_DrawableGravity_templ<_Magick_DrawableGravity_inst> {
public:
  using _Magick_DrawableGravity_templ::_Magick_DrawableGravity_templ;
  virtual ~_Magick_DrawableGravity_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableGravity_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableGravity_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableGravity (_Magick_DrawableGravity) */
// jsnapi_getclass
Napi::Function _Magick_DrawableGravity_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableGravity_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableGravity_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableGravity_inst>::DefineClass(env, "DrawableGravity", symbolTable);
}

void _Magick_DrawableGravity_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableGravity_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableGravity_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableGravity_templ::InstanceMethod("call",
        &_Magick_DrawableGravity_templ::_wrap_Magick_DrawableGravity_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableGravity_templ::InstanceMethod("copy",
        &_Magick_DrawableGravity_templ::_wrap_Magick_DrawableGravity_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gravity");
  members.insert({
    "gravity",
      _Magick_DrawableGravity_templ::InstanceMethod("gravity",
        &_Magick_DrawableGravity_templ::_wrap_DrawableGravity__wrap_Magick_DrawableGravity_gravity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableLine_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableLine_templ(const Napi::CallbackInfo &);
_Magick_DrawableLine_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableLine(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableLine_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_startX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_startX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableLine__wrap_Magick_DrawableLine_startX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_startY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_startY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableLine__wrap_Magick_DrawableLine_startY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_endX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_endX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableLine__wrap_Magick_DrawableLine_endX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_endY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableLine_endY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableLine__wrap_Magick_DrawableLine_endY(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableLine_inst : public _Magick_DrawableLine_templ<_Magick_DrawableLine_inst> {
public:
  using _Magick_DrawableLine_templ::_Magick_DrawableLine_templ;
  virtual ~_Magick_DrawableLine_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableLine_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableLine_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableLine (_Magick_DrawableLine) */
// jsnapi_getclass
Napi::Function _Magick_DrawableLine_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableLine_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableLine_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableLine_inst>::DefineClass(env, "DrawableLine", symbolTable);
}

void _Magick_DrawableLine_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableLine_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableLine_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableLine_templ::InstanceMethod("call",
        &_Magick_DrawableLine_templ::_wrap_Magick_DrawableLine_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableLine_templ::InstanceMethod("copy",
        &_Magick_DrawableLine_templ::_wrap_Magick_DrawableLine_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("startX");
  members.insert({
    "startX",
      _Magick_DrawableLine_templ::InstanceMethod("startX",
        &_Magick_DrawableLine_templ::_wrap_DrawableLine__wrap_Magick_DrawableLine_startX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("startY");
  members.insert({
    "startY",
      _Magick_DrawableLine_templ::InstanceMethod("startY",
        &_Magick_DrawableLine_templ::_wrap_DrawableLine__wrap_Magick_DrawableLine_startY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("endX");
  members.insert({
    "endX",
      _Magick_DrawableLine_templ::InstanceMethod("endX",
        &_Magick_DrawableLine_templ::_wrap_DrawableLine__wrap_Magick_DrawableLine_endX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("endY");
  members.insert({
    "endY",
      _Magick_DrawableLine_templ::InstanceMethod("endY",
        &_Magick_DrawableLine_templ::_wrap_DrawableLine__wrap_Magick_DrawableLine_endY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePath_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePath_templ(const Napi::CallbackInfo &);
_Magick_DrawablePath_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePath__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePath__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePath_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePath_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePath_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePath_inst : public _Magick_DrawablePath_templ<_Magick_DrawablePath_inst> {
public:
  using _Magick_DrawablePath_templ::_Magick_DrawablePath_templ;
  virtual ~_Magick_DrawablePath_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePath_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePath_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePath (_Magick_DrawablePath) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePath_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePath_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePath_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePath_inst>::DefineClass(env, "DrawablePath", symbolTable);
}

void _Magick_DrawablePath_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePath_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePath_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePath_templ::InstanceMethod("call",
        &_Magick_DrawablePath_templ::_wrap_Magick_DrawablePath_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePath_templ::InstanceMethod("copy",
        &_Magick_DrawablePath_templ::_wrap_Magick_DrawablePath_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePoint_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePoint_templ(const Napi::CallbackInfo &);
_Magick_DrawablePoint_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePoint(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePoint_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePoint_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePoint_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePoint_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePoint_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawablePoint__wrap_Magick_DrawablePoint_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePoint_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePoint_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawablePoint__wrap_Magick_DrawablePoint_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePoint_inst : public _Magick_DrawablePoint_templ<_Magick_DrawablePoint_inst> {
public:
  using _Magick_DrawablePoint_templ::_Magick_DrawablePoint_templ;
  virtual ~_Magick_DrawablePoint_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePoint_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePoint_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePoint (_Magick_DrawablePoint) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePoint_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePoint_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePoint_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePoint_inst>::DefineClass(env, "DrawablePoint", symbolTable);
}

void _Magick_DrawablePoint_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePoint_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePoint_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePoint_templ::InstanceMethod("call",
        &_Magick_DrawablePoint_templ::_wrap_Magick_DrawablePoint_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePoint_templ::InstanceMethod("copy",
        &_Magick_DrawablePoint_templ::_wrap_Magick_DrawablePoint_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_DrawablePoint_templ::InstanceMethod("x",
        &_Magick_DrawablePoint_templ::_wrap_DrawablePoint__wrap_Magick_DrawablePoint_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_DrawablePoint_templ::InstanceMethod("y",
        &_Magick_DrawablePoint_templ::_wrap_DrawablePoint__wrap_Magick_DrawablePoint_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePointSize_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePointSize_templ(const Napi::CallbackInfo &);
_Magick_DrawablePointSize_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePointSize(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePointSize_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePointSize_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePointSize_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePointSize_pointSize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePointSize_pointSize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawablePointSize__wrap_Magick_DrawablePointSize_pointSize(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePointSize_inst : public _Magick_DrawablePointSize_templ<_Magick_DrawablePointSize_inst> {
public:
  using _Magick_DrawablePointSize_templ::_Magick_DrawablePointSize_templ;
  virtual ~_Magick_DrawablePointSize_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePointSize_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePointSize_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePointSize (_Magick_DrawablePointSize) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePointSize_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePointSize_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePointSize_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePointSize_inst>::DefineClass(env, "DrawablePointSize", symbolTable);
}

void _Magick_DrawablePointSize_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePointSize_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePointSize_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePointSize_templ::InstanceMethod("call",
        &_Magick_DrawablePointSize_templ::_wrap_Magick_DrawablePointSize_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePointSize_templ::InstanceMethod("copy",
        &_Magick_DrawablePointSize_templ::_wrap_Magick_DrawablePointSize_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pointSize");
  members.insert({
    "pointSize",
      _Magick_DrawablePointSize_templ::InstanceMethod("pointSize",
        &_Magick_DrawablePointSize_templ::_wrap_DrawablePointSize__wrap_Magick_DrawablePointSize_pointSize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePolygon_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePolygon_templ(const Napi::CallbackInfo &);
_Magick_DrawablePolygon_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePolygon__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePolygon__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePolygon_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePolygon_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePolygon_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePolygon_inst : public _Magick_DrawablePolygon_templ<_Magick_DrawablePolygon_inst> {
public:
  using _Magick_DrawablePolygon_templ::_Magick_DrawablePolygon_templ;
  virtual ~_Magick_DrawablePolygon_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePolygon_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePolygon_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePolygon (_Magick_DrawablePolygon) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePolygon_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePolygon_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePolygon_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePolygon_inst>::DefineClass(env, "DrawablePolygon", symbolTable);
}

void _Magick_DrawablePolygon_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePolygon_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePolygon_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePolygon_templ::InstanceMethod("call",
        &_Magick_DrawablePolygon_templ::_wrap_Magick_DrawablePolygon_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePolygon_templ::InstanceMethod("copy",
        &_Magick_DrawablePolygon_templ::_wrap_Magick_DrawablePolygon_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePolyline_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePolyline_templ(const Napi::CallbackInfo &);
_Magick_DrawablePolyline_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePolyline__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePolyline__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePolyline_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePolyline_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePolyline_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePolyline_inst : public _Magick_DrawablePolyline_templ<_Magick_DrawablePolyline_inst> {
public:
  using _Magick_DrawablePolyline_templ::_Magick_DrawablePolyline_templ;
  virtual ~_Magick_DrawablePolyline_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePolyline_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePolyline_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePolyline (_Magick_DrawablePolyline) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePolyline_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePolyline_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePolyline_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePolyline_inst>::DefineClass(env, "DrawablePolyline", symbolTable);
}

void _Magick_DrawablePolyline_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePolyline_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePolyline_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePolyline_templ::InstanceMethod("call",
        &_Magick_DrawablePolyline_templ::_wrap_Magick_DrawablePolyline_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePolyline_templ::InstanceMethod("copy",
        &_Magick_DrawablePolyline_templ::_wrap_Magick_DrawablePolyline_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePopGraphicContext_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePopGraphicContext_templ(const Napi::CallbackInfo &);
_Magick_DrawablePopGraphicContext_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePopGraphicContext(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePopGraphicContext_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePopGraphicContext_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePopGraphicContext_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePopGraphicContext_inst : public _Magick_DrawablePopGraphicContext_templ<_Magick_DrawablePopGraphicContext_inst> {
public:
  using _Magick_DrawablePopGraphicContext_templ::_Magick_DrawablePopGraphicContext_templ;
  virtual ~_Magick_DrawablePopGraphicContext_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePopGraphicContext_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePopGraphicContext_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePopGraphicContext (_Magick_DrawablePopGraphicContext) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePopGraphicContext_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePopGraphicContext_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePopGraphicContext_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePopGraphicContext_inst>::DefineClass(env, "DrawablePopGraphicContext", symbolTable);
}

void _Magick_DrawablePopGraphicContext_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePopGraphicContext_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePopGraphicContext_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePopGraphicContext_templ::InstanceMethod("call",
        &_Magick_DrawablePopGraphicContext_templ::_wrap_Magick_DrawablePopGraphicContext_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePopGraphicContext_templ::InstanceMethod("copy",
        &_Magick_DrawablePopGraphicContext_templ::_wrap_Magick_DrawablePopGraphicContext_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePushGraphicContext_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePushGraphicContext_templ(const Napi::CallbackInfo &);
_Magick_DrawablePushGraphicContext_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePushGraphicContext(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePushGraphicContext_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePushGraphicContext_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePushGraphicContext_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePushGraphicContext_inst : public _Magick_DrawablePushGraphicContext_templ<_Magick_DrawablePushGraphicContext_inst> {
public:
  using _Magick_DrawablePushGraphicContext_templ::_Magick_DrawablePushGraphicContext_templ;
  virtual ~_Magick_DrawablePushGraphicContext_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePushGraphicContext_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePushGraphicContext_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePushGraphicContext (_Magick_DrawablePushGraphicContext) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePushGraphicContext_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePushGraphicContext_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePushGraphicContext_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePushGraphicContext_inst>::DefineClass(env, "DrawablePushGraphicContext", symbolTable);
}

void _Magick_DrawablePushGraphicContext_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePushGraphicContext_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePushGraphicContext_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePushGraphicContext_templ::InstanceMethod("call",
        &_Magick_DrawablePushGraphicContext_templ::_wrap_Magick_DrawablePushGraphicContext_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePushGraphicContext_templ::InstanceMethod("copy",
        &_Magick_DrawablePushGraphicContext_templ::_wrap_Magick_DrawablePushGraphicContext_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePopPattern_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePopPattern_templ(const Napi::CallbackInfo &);
_Magick_DrawablePopPattern_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePopPattern(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePopPattern_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePopPattern_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePopPattern_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePopPattern_inst : public _Magick_DrawablePopPattern_templ<_Magick_DrawablePopPattern_inst> {
public:
  using _Magick_DrawablePopPattern_templ::_Magick_DrawablePopPattern_templ;
  virtual ~_Magick_DrawablePopPattern_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePopPattern_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePopPattern_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePopPattern (_Magick_DrawablePopPattern) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePopPattern_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePopPattern_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePopPattern_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePopPattern_inst>::DefineClass(env, "DrawablePopPattern", symbolTable);
}

void _Magick_DrawablePopPattern_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePopPattern_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePopPattern_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePopPattern_templ::InstanceMethod("call",
        &_Magick_DrawablePopPattern_templ::_wrap_Magick_DrawablePopPattern_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePopPattern_templ::InstanceMethod("copy",
        &_Magick_DrawablePopPattern_templ::_wrap_Magick_DrawablePopPattern_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawablePushPattern_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawablePushPattern_templ(const Napi::CallbackInfo &);
_Magick_DrawablePushPattern_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePushPattern__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawablePushPattern__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawablePushPattern_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePushPattern_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawablePushPattern_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawablePushPattern_inst : public _Magick_DrawablePushPattern_templ<_Magick_DrawablePushPattern_inst> {
public:
  using _Magick_DrawablePushPattern_templ::_Magick_DrawablePushPattern_templ;
  virtual ~_Magick_DrawablePushPattern_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawablePushPattern_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawablePushPattern_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawablePushPattern (_Magick_DrawablePushPattern) */
// jsnapi_getclass
Napi::Function _Magick_DrawablePushPattern_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawablePushPattern_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawablePushPattern_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawablePushPattern_inst>::DefineClass(env, "DrawablePushPattern", symbolTable);
}

void _Magick_DrawablePushPattern_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawablePushPattern_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawablePushPattern_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawablePushPattern_templ::InstanceMethod("call",
        &_Magick_DrawablePushPattern_templ::_wrap_Magick_DrawablePushPattern_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawablePushPattern_templ::InstanceMethod("copy",
        &_Magick_DrawablePushPattern_templ::_wrap_Magick_DrawablePushPattern_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableRectangle_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableRectangle_templ(const Napi::CallbackInfo &);
_Magick_DrawableRectangle_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableRectangle(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableRectangle_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_upperLeftX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_upperLeftX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_upperLeftX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_upperLeftY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_upperLeftY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_upperLeftY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_lowerRightX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_lowerRightX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_lowerRightX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_lowerRightY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRectangle_lowerRightY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_lowerRightY(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableRectangle_inst : public _Magick_DrawableRectangle_templ<_Magick_DrawableRectangle_inst> {
public:
  using _Magick_DrawableRectangle_templ::_Magick_DrawableRectangle_templ;
  virtual ~_Magick_DrawableRectangle_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableRectangle_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableRectangle_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableRectangle (_Magick_DrawableRectangle) */
// jsnapi_getclass
Napi::Function _Magick_DrawableRectangle_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableRectangle_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableRectangle_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableRectangle_inst>::DefineClass(env, "DrawableRectangle", symbolTable);
}

void _Magick_DrawableRectangle_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableRectangle_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableRectangle_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableRectangle_templ::InstanceMethod("call",
        &_Magick_DrawableRectangle_templ::_wrap_Magick_DrawableRectangle_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableRectangle_templ::InstanceMethod("copy",
        &_Magick_DrawableRectangle_templ::_wrap_Magick_DrawableRectangle_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("upperLeftX");
  members.insert({
    "upperLeftX",
      _Magick_DrawableRectangle_templ::InstanceMethod("upperLeftX",
        &_Magick_DrawableRectangle_templ::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_upperLeftX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("upperLeftY");
  members.insert({
    "upperLeftY",
      _Magick_DrawableRectangle_templ::InstanceMethod("upperLeftY",
        &_Magick_DrawableRectangle_templ::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_upperLeftY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lowerRightX");
  members.insert({
    "lowerRightX",
      _Magick_DrawableRectangle_templ::InstanceMethod("lowerRightX",
        &_Magick_DrawableRectangle_templ::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_lowerRightX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lowerRightY");
  members.insert({
    "lowerRightY",
      _Magick_DrawableRectangle_templ::InstanceMethod("lowerRightY",
        &_Magick_DrawableRectangle_templ::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_lowerRightY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableRotation_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableRotation_templ(const Napi::CallbackInfo &);
_Magick_DrawableRotation_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableRotation(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableRotation_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRotation_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRotation_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRotation_angle__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRotation_angle__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRotation__wrap_Magick_DrawableRotation_angle(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableRotation_inst : public _Magick_DrawableRotation_templ<_Magick_DrawableRotation_inst> {
public:
  using _Magick_DrawableRotation_templ::_Magick_DrawableRotation_templ;
  virtual ~_Magick_DrawableRotation_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableRotation_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableRotation_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableRotation (_Magick_DrawableRotation) */
// jsnapi_getclass
Napi::Function _Magick_DrawableRotation_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableRotation_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableRotation_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableRotation_inst>::DefineClass(env, "DrawableRotation", symbolTable);
}

void _Magick_DrawableRotation_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableRotation_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableRotation_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableRotation_templ::InstanceMethod("call",
        &_Magick_DrawableRotation_templ::_wrap_Magick_DrawableRotation_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableRotation_templ::InstanceMethod("copy",
        &_Magick_DrawableRotation_templ::_wrap_Magick_DrawableRotation_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("angle");
  members.insert({
    "angle",
      _Magick_DrawableRotation_templ::InstanceMethod("angle",
        &_Magick_DrawableRotation_templ::_wrap_DrawableRotation__wrap_Magick_DrawableRotation_angle,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableRoundRectangle_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableRoundRectangle_templ(const Napi::CallbackInfo &);
_Magick_DrawableRoundRectangle_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableRoundRectangle(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableRoundRectangle_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_upperLeftX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_upperLeftY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_lowerRightX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_lowerRightY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_cornerWidth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_cornerHeight(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableRoundRectangle_inst : public _Magick_DrawableRoundRectangle_templ<_Magick_DrawableRoundRectangle_inst> {
public:
  using _Magick_DrawableRoundRectangle_templ::_Magick_DrawableRoundRectangle_templ;
  virtual ~_Magick_DrawableRoundRectangle_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableRoundRectangle_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableRoundRectangle_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableRoundRectangle (_Magick_DrawableRoundRectangle) */
// jsnapi_getclass
Napi::Function _Magick_DrawableRoundRectangle_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableRoundRectangle_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableRoundRectangle_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableRoundRectangle_inst>::DefineClass(env, "DrawableRoundRectangle", symbolTable);
}

void _Magick_DrawableRoundRectangle_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableRoundRectangle_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableRoundRectangle_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("call",
        &_Magick_DrawableRoundRectangle_templ::_wrap_Magick_DrawableRoundRectangle_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("copy",
        &_Magick_DrawableRoundRectangle_templ::_wrap_Magick_DrawableRoundRectangle_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("upperLeftX");
  members.insert({
    "upperLeftX",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("upperLeftX",
        &_Magick_DrawableRoundRectangle_templ::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_upperLeftX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("upperLeftY");
  members.insert({
    "upperLeftY",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("upperLeftY",
        &_Magick_DrawableRoundRectangle_templ::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_upperLeftY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lowerRightX");
  members.insert({
    "lowerRightX",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("lowerRightX",
        &_Magick_DrawableRoundRectangle_templ::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_lowerRightX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lowerRightY");
  members.insert({
    "lowerRightY",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("lowerRightY",
        &_Magick_DrawableRoundRectangle_templ::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_lowerRightY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cornerWidth");
  members.insert({
    "cornerWidth",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("cornerWidth",
        &_Magick_DrawableRoundRectangle_templ::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_cornerWidth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cornerHeight");
  members.insert({
    "cornerHeight",
      _Magick_DrawableRoundRectangle_templ::InstanceMethod("cornerHeight",
        &_Magick_DrawableRoundRectangle_templ::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_cornerHeight,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableScaling_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableScaling_templ(const Napi::CallbackInfo &);
_Magick_DrawableScaling_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableScaling(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableScaling_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableScaling_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableScaling_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableScaling_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableScaling_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableScaling__wrap_Magick_DrawableScaling_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableScaling_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableScaling_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableScaling__wrap_Magick_DrawableScaling_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableScaling_inst : public _Magick_DrawableScaling_templ<_Magick_DrawableScaling_inst> {
public:
  using _Magick_DrawableScaling_templ::_Magick_DrawableScaling_templ;
  virtual ~_Magick_DrawableScaling_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableScaling_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableScaling_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableScaling (_Magick_DrawableScaling) */
// jsnapi_getclass
Napi::Function _Magick_DrawableScaling_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableScaling_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableScaling_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableScaling_inst>::DefineClass(env, "DrawableScaling", symbolTable);
}

void _Magick_DrawableScaling_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableScaling_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableScaling_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableScaling_templ::InstanceMethod("call",
        &_Magick_DrawableScaling_templ::_wrap_Magick_DrawableScaling_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableScaling_templ::InstanceMethod("copy",
        &_Magick_DrawableScaling_templ::_wrap_Magick_DrawableScaling_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_DrawableScaling_templ::InstanceMethod("x",
        &_Magick_DrawableScaling_templ::_wrap_DrawableScaling__wrap_Magick_DrawableScaling_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_DrawableScaling_templ::InstanceMethod("y",
        &_Magick_DrawableScaling_templ::_wrap_DrawableScaling__wrap_Magick_DrawableScaling_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableSkewX_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableSkewX_templ(const Napi::CallbackInfo &);
_Magick_DrawableSkewX_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableSkewX(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableSkewX_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewX_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewX_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewX_angle__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewX_angle__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableSkewX__wrap_Magick_DrawableSkewX_angle(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableSkewX_inst : public _Magick_DrawableSkewX_templ<_Magick_DrawableSkewX_inst> {
public:
  using _Magick_DrawableSkewX_templ::_Magick_DrawableSkewX_templ;
  virtual ~_Magick_DrawableSkewX_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableSkewX_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableSkewX_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableSkewX (_Magick_DrawableSkewX) */
// jsnapi_getclass
Napi::Function _Magick_DrawableSkewX_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableSkewX_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableSkewX_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableSkewX_inst>::DefineClass(env, "DrawableSkewX", symbolTable);
}

void _Magick_DrawableSkewX_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableSkewX_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableSkewX_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableSkewX_templ::InstanceMethod("call",
        &_Magick_DrawableSkewX_templ::_wrap_Magick_DrawableSkewX_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableSkewX_templ::InstanceMethod("copy",
        &_Magick_DrawableSkewX_templ::_wrap_Magick_DrawableSkewX_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("angle");
  members.insert({
    "angle",
      _Magick_DrawableSkewX_templ::InstanceMethod("angle",
        &_Magick_DrawableSkewX_templ::_wrap_DrawableSkewX__wrap_Magick_DrawableSkewX_angle,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableSkewY_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableSkewY_templ(const Napi::CallbackInfo &);
_Magick_DrawableSkewY_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableSkewY(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableSkewY_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewY_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewY_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewY_angle__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableSkewY_angle__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableSkewY__wrap_Magick_DrawableSkewY_angle(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableSkewY_inst : public _Magick_DrawableSkewY_templ<_Magick_DrawableSkewY_inst> {
public:
  using _Magick_DrawableSkewY_templ::_Magick_DrawableSkewY_templ;
  virtual ~_Magick_DrawableSkewY_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableSkewY_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableSkewY_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableSkewY (_Magick_DrawableSkewY) */
// jsnapi_getclass
Napi::Function _Magick_DrawableSkewY_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableSkewY_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableSkewY_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableSkewY_inst>::DefineClass(env, "DrawableSkewY", symbolTable);
}

void _Magick_DrawableSkewY_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableSkewY_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableSkewY_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableSkewY_templ::InstanceMethod("call",
        &_Magick_DrawableSkewY_templ::_wrap_Magick_DrawableSkewY_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableSkewY_templ::InstanceMethod("copy",
        &_Magick_DrawableSkewY_templ::_wrap_Magick_DrawableSkewY_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("angle");
  members.insert({
    "angle",
      _Magick_DrawableSkewY_templ::InstanceMethod("angle",
        &_Magick_DrawableSkewY_templ::_wrap_DrawableSkewY__wrap_Magick_DrawableSkewY_angle,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeDashArray_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeDashArray_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeDashArray_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeDashArray__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeDashArray__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeDashArray_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashArray_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashArray_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeDashArray__wrap_Magick_DrawableStrokeDashArray_dasharray(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashArray_clone(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeDashArray_inst : public _Magick_DrawableStrokeDashArray_templ<_Magick_DrawableStrokeDashArray_inst> {
public:
  using _Magick_DrawableStrokeDashArray_templ::_Magick_DrawableStrokeDashArray_templ;
  virtual ~_Magick_DrawableStrokeDashArray_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeDashArray_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeDashArray_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeDashArray (_Magick_DrawableStrokeDashArray) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeDashArray_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeDashArray_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeDashArray_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeDashArray_inst>::DefineClass(env, "DrawableStrokeDashArray", symbolTable);
}

void _Magick_DrawableStrokeDashArray_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeDashArray_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeDashArray_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeDashArray_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeDashArray_templ::_wrap_Magick_DrawableStrokeDashArray_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeDashArray_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeDashArray_templ::_wrap_Magick_DrawableStrokeDashArray_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("dasharray");
  members.insert({
    "dasharray",
      _Magick_DrawableStrokeDashArray_templ::InstanceMethod("dasharray",
        &_Magick_DrawableStrokeDashArray_templ::_wrap_DrawableStrokeDashArray__wrap_Magick_DrawableStrokeDashArray_dasharray,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_DrawableStrokeDashArray_templ::InstanceMethod("clone",
        &_Magick_DrawableStrokeDashArray_templ::_wrap_Magick_DrawableStrokeDashArray_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeDashOffset_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeDashOffset_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeDashOffset_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeDashOffset(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeDashOffset_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashOffset_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashOffset_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeDashOffset__wrap_Magick_DrawableStrokeDashOffset_offset(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeDashOffset_inst : public _Magick_DrawableStrokeDashOffset_templ<_Magick_DrawableStrokeDashOffset_inst> {
public:
  using _Magick_DrawableStrokeDashOffset_templ::_Magick_DrawableStrokeDashOffset_templ;
  virtual ~_Magick_DrawableStrokeDashOffset_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeDashOffset_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeDashOffset_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeDashOffset (_Magick_DrawableStrokeDashOffset) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeDashOffset_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeDashOffset_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeDashOffset_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeDashOffset_inst>::DefineClass(env, "DrawableStrokeDashOffset", symbolTable);
}

void _Magick_DrawableStrokeDashOffset_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeDashOffset_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeDashOffset_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeDashOffset_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeDashOffset_templ::_wrap_Magick_DrawableStrokeDashOffset_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeDashOffset_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeDashOffset_templ::_wrap_Magick_DrawableStrokeDashOffset_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("offset");
  members.insert({
    "offset",
      _Magick_DrawableStrokeDashOffset_templ::InstanceMethod("offset",
        &_Magick_DrawableStrokeDashOffset_templ::_wrap_DrawableStrokeDashOffset__wrap_Magick_DrawableStrokeDashOffset_offset,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeLineCap_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeLineCap_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeLineCap_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeLineCap(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeLineCap_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineCap_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineCap_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeLineCap__wrap_Magick_DrawableStrokeLineCap_linecap(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeLineCap_inst : public _Magick_DrawableStrokeLineCap_templ<_Magick_DrawableStrokeLineCap_inst> {
public:
  using _Magick_DrawableStrokeLineCap_templ::_Magick_DrawableStrokeLineCap_templ;
  virtual ~_Magick_DrawableStrokeLineCap_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeLineCap_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeLineCap_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeLineCap (_Magick_DrawableStrokeLineCap) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeLineCap_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeLineCap_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeLineCap_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeLineCap_inst>::DefineClass(env, "DrawableStrokeLineCap", symbolTable);
}

void _Magick_DrawableStrokeLineCap_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeLineCap_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeLineCap_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeLineCap_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeLineCap_templ::_wrap_Magick_DrawableStrokeLineCap_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeLineCap_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeLineCap_templ::_wrap_Magick_DrawableStrokeLineCap_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("linecap");
  members.insert({
    "linecap",
      _Magick_DrawableStrokeLineCap_templ::InstanceMethod("linecap",
        &_Magick_DrawableStrokeLineCap_templ::_wrap_DrawableStrokeLineCap__wrap_Magick_DrawableStrokeLineCap_linecap,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeLineJoin_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeLineJoin_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeLineJoin_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeLineJoin(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeLineJoin_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineJoin_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineJoin_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeLineJoin__wrap_Magick_DrawableStrokeLineJoin_linejoin(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeLineJoin_inst : public _Magick_DrawableStrokeLineJoin_templ<_Magick_DrawableStrokeLineJoin_inst> {
public:
  using _Magick_DrawableStrokeLineJoin_templ::_Magick_DrawableStrokeLineJoin_templ;
  virtual ~_Magick_DrawableStrokeLineJoin_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeLineJoin_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeLineJoin_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeLineJoin (_Magick_DrawableStrokeLineJoin) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeLineJoin_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeLineJoin_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeLineJoin_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeLineJoin_inst>::DefineClass(env, "DrawableStrokeLineJoin", symbolTable);
}

void _Magick_DrawableStrokeLineJoin_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeLineJoin_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeLineJoin_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeLineJoin_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeLineJoin_templ::_wrap_Magick_DrawableStrokeLineJoin_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeLineJoin_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeLineJoin_templ::_wrap_Magick_DrawableStrokeLineJoin_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("linejoin");
  members.insert({
    "linejoin",
      _Magick_DrawableStrokeLineJoin_templ::InstanceMethod("linejoin",
        &_Magick_DrawableStrokeLineJoin_templ::_wrap_DrawableStrokeLineJoin__wrap_Magick_DrawableStrokeLineJoin_linejoin,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableMiterLimit_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableMiterLimit_templ(const Napi::CallbackInfo &);
_Magick_DrawableMiterLimit_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableMiterLimit(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableMiterLimit_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableMiterLimit_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableMiterLimit_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableMiterLimit__wrap_Magick_DrawableMiterLimit_miterlimit(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableMiterLimit_inst : public _Magick_DrawableMiterLimit_templ<_Magick_DrawableMiterLimit_inst> {
public:
  using _Magick_DrawableMiterLimit_templ::_Magick_DrawableMiterLimit_templ;
  virtual ~_Magick_DrawableMiterLimit_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableMiterLimit_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableMiterLimit_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableMiterLimit (_Magick_DrawableMiterLimit) */
// jsnapi_getclass
Napi::Function _Magick_DrawableMiterLimit_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableMiterLimit_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableMiterLimit_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableMiterLimit_inst>::DefineClass(env, "DrawableMiterLimit", symbolTable);
}

void _Magick_DrawableMiterLimit_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableMiterLimit_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableMiterLimit_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableMiterLimit_templ::InstanceMethod("call",
        &_Magick_DrawableMiterLimit_templ::_wrap_Magick_DrawableMiterLimit_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableMiterLimit_templ::InstanceMethod("copy",
        &_Magick_DrawableMiterLimit_templ::_wrap_Magick_DrawableMiterLimit_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("miterlimit");
  members.insert({
    "miterlimit",
      _Magick_DrawableMiterLimit_templ::InstanceMethod("miterlimit",
        &_Magick_DrawableMiterLimit_templ::_wrap_DrawableMiterLimit__wrap_Magick_DrawableMiterLimit_miterlimit,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokePatternUrl_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokePatternUrl_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokePatternUrl_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_0(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokePatternUrl_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokePatternUrl_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokePatternUrl_url__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokePatternUrl_url__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokePatternUrl__wrap_Magick_DrawableStrokePatternUrl_url(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokePatternUrl_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokePatternUrl_inst : public _Magick_DrawableStrokePatternUrl_templ<_Magick_DrawableStrokePatternUrl_inst> {
public:
  using _Magick_DrawableStrokePatternUrl_templ::_Magick_DrawableStrokePatternUrl_templ;
  virtual ~_Magick_DrawableStrokePatternUrl_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokePatternUrl_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokePatternUrl_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokePatternUrl (_Magick_DrawableStrokePatternUrl) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokePatternUrl_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokePatternUrl_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokePatternUrl_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokePatternUrl_inst>::DefineClass(env, "DrawableStrokePatternUrl", symbolTable);
}

void _Magick_DrawableStrokePatternUrl_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokePatternUrl_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokePatternUrl_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokePatternUrl_templ::InstanceMethod("call",
        &_Magick_DrawableStrokePatternUrl_templ::_wrap_Magick_DrawableStrokePatternUrl_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("url");
  members.insert({
    "url",
      _Magick_DrawableStrokePatternUrl_templ::InstanceMethod("url",
        &_Magick_DrawableStrokePatternUrl_templ::_wrap_DrawableStrokePatternUrl__wrap_Magick_DrawableStrokePatternUrl_url,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokePatternUrl_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokePatternUrl_templ::_wrap_Magick_DrawableStrokePatternUrl_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeAntialias_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeAntialias_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeAntialias_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeAntialias(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeAntialias_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeAntialias_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeAntialias_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeAntialias_flag__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeAntialias_flag__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeAntialias__wrap_Magick_DrawableStrokeAntialias_flag(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeAntialias_inst : public _Magick_DrawableStrokeAntialias_templ<_Magick_DrawableStrokeAntialias_inst> {
public:
  using _Magick_DrawableStrokeAntialias_templ::_Magick_DrawableStrokeAntialias_templ;
  virtual ~_Magick_DrawableStrokeAntialias_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeAntialias_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeAntialias_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeAntialias (_Magick_DrawableStrokeAntialias) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeAntialias_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeAntialias_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeAntialias_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeAntialias_inst>::DefineClass(env, "DrawableStrokeAntialias", symbolTable);
}

void _Magick_DrawableStrokeAntialias_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeAntialias_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeAntialias_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeAntialias_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeAntialias_templ::_wrap_Magick_DrawableStrokeAntialias_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeAntialias_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeAntialias_templ::_wrap_Magick_DrawableStrokeAntialias_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("flag");
  members.insert({
    "flag",
      _Magick_DrawableStrokeAntialias_templ::InstanceMethod("flag",
        &_Magick_DrawableStrokeAntialias_templ::_wrap_DrawableStrokeAntialias__wrap_Magick_DrawableStrokeAntialias_flag,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeColor_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeColor_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeColor_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeColor__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeColor_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeColor_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeColor_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeColor_color__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeColor_color__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeColor__wrap_Magick_DrawableStrokeColor_color(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeColor_inst : public _Magick_DrawableStrokeColor_templ<_Magick_DrawableStrokeColor_inst> {
public:
  using _Magick_DrawableStrokeColor_templ::_Magick_DrawableStrokeColor_templ;
  virtual ~_Magick_DrawableStrokeColor_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeColor_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeColor_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeColor (_Magick_DrawableStrokeColor) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeColor_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeColor_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeColor_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeColor_inst>::DefineClass(env, "DrawableStrokeColor", symbolTable);
}

void _Magick_DrawableStrokeColor_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeColor_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeColor_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeColor_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeColor_templ::_wrap_Magick_DrawableStrokeColor_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeColor_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeColor_templ::_wrap_Magick_DrawableStrokeColor_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("color");
  members.insert({
    "color",
      _Magick_DrawableStrokeColor_templ::InstanceMethod("color",
        &_Magick_DrawableStrokeColor_templ::_wrap_DrawableStrokeColor__wrap_Magick_DrawableStrokeColor_color,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeOpacity_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeOpacity_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeOpacity_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeOpacity(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeOpacity_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeOpacity_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeOpacity_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeOpacity__wrap_Magick_DrawableStrokeOpacity_opacity(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeOpacity_inst : public _Magick_DrawableStrokeOpacity_templ<_Magick_DrawableStrokeOpacity_inst> {
public:
  using _Magick_DrawableStrokeOpacity_templ::_Magick_DrawableStrokeOpacity_templ;
  virtual ~_Magick_DrawableStrokeOpacity_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeOpacity_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeOpacity_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeOpacity (_Magick_DrawableStrokeOpacity) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeOpacity_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeOpacity_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeOpacity_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeOpacity_inst>::DefineClass(env, "DrawableStrokeOpacity", symbolTable);
}

void _Magick_DrawableStrokeOpacity_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeOpacity_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeOpacity_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeOpacity_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeOpacity_templ::_wrap_Magick_DrawableStrokeOpacity_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeOpacity_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeOpacity_templ::_wrap_Magick_DrawableStrokeOpacity_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("opacity");
  members.insert({
    "opacity",
      _Magick_DrawableStrokeOpacity_templ::InstanceMethod("opacity",
        &_Magick_DrawableStrokeOpacity_templ::_wrap_DrawableStrokeOpacity__wrap_Magick_DrawableStrokeOpacity_opacity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableStrokeWidth_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableStrokeWidth_templ(const Napi::CallbackInfo &);
_Magick_DrawableStrokeWidth_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableStrokeWidth(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableStrokeWidth_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeWidth_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeWidth_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeWidth_width__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableStrokeWidth_width__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableStrokeWidth__wrap_Magick_DrawableStrokeWidth_width(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableStrokeWidth_inst : public _Magick_DrawableStrokeWidth_templ<_Magick_DrawableStrokeWidth_inst> {
public:
  using _Magick_DrawableStrokeWidth_templ::_Magick_DrawableStrokeWidth_templ;
  virtual ~_Magick_DrawableStrokeWidth_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableStrokeWidth_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableStrokeWidth_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableStrokeWidth (_Magick_DrawableStrokeWidth) */
// jsnapi_getclass
Napi::Function _Magick_DrawableStrokeWidth_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableStrokeWidth_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableStrokeWidth_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableStrokeWidth_inst>::DefineClass(env, "DrawableStrokeWidth", symbolTable);
}

void _Magick_DrawableStrokeWidth_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableStrokeWidth_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableStrokeWidth_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableStrokeWidth_templ::InstanceMethod("call",
        &_Magick_DrawableStrokeWidth_templ::_wrap_Magick_DrawableStrokeWidth_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableStrokeWidth_templ::InstanceMethod("copy",
        &_Magick_DrawableStrokeWidth_templ::_wrap_Magick_DrawableStrokeWidth_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("width");
  members.insert({
    "width",
      _Magick_DrawableStrokeWidth_templ::InstanceMethod("width",
        &_Magick_DrawableStrokeWidth_templ::_wrap_DrawableStrokeWidth__wrap_Magick_DrawableStrokeWidth_width,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableText_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableText_templ(const Napi::CallbackInfo &);
_Magick_DrawableText_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableText__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableText__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableText__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableText_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_encoding(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableText__wrap_Magick_DrawableText_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableText__wrap_Magick_DrawableText_y(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_text__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableText_text__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableText__wrap_Magick_DrawableText_text(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableText_inst : public _Magick_DrawableText_templ<_Magick_DrawableText_inst> {
public:
  using _Magick_DrawableText_templ::_Magick_DrawableText_templ;
  virtual ~_Magick_DrawableText_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableText_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableText_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableText (_Magick_DrawableText) */
// jsnapi_getclass
Napi::Function _Magick_DrawableText_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableText_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableText_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableText_inst>::DefineClass(env, "DrawableText", symbolTable);
}

void _Magick_DrawableText_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableText_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableText_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableText_templ::InstanceMethod("call",
        &_Magick_DrawableText_templ::_wrap_Magick_DrawableText_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableText_templ::InstanceMethod("copy",
        &_Magick_DrawableText_templ::_wrap_Magick_DrawableText_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("encoding");
  members.insert({
    "encoding",
      _Magick_DrawableText_templ::InstanceMethod("encoding",
        &_Magick_DrawableText_templ::_wrap_Magick_DrawableText_encoding,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_DrawableText_templ::InstanceMethod("x",
        &_Magick_DrawableText_templ::_wrap_DrawableText__wrap_Magick_DrawableText_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_DrawableText_templ::InstanceMethod("y",
        &_Magick_DrawableText_templ::_wrap_DrawableText__wrap_Magick_DrawableText_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("text");
  members.insert({
    "text",
      _Magick_DrawableText_templ::InstanceMethod("text",
        &_Magick_DrawableText_templ::_wrap_DrawableText__wrap_Magick_DrawableText_text,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextAlignment_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextAlignment_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextAlignment_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextAlignment__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextAlignment__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextAlignment_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAlignment_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAlignment_alignment__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAlignment_alignment__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextAlignment__wrap_Magick_DrawableTextAlignment_alignment(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAlignment_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextAlignment_inst : public _Magick_DrawableTextAlignment_templ<_Magick_DrawableTextAlignment_inst> {
public:
  using _Magick_DrawableTextAlignment_templ::_Magick_DrawableTextAlignment_templ;
  virtual ~_Magick_DrawableTextAlignment_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextAlignment_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextAlignment_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextAlignment (_Magick_DrawableTextAlignment) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextAlignment_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextAlignment_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextAlignment_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextAlignment_inst>::DefineClass(env, "DrawableTextAlignment", symbolTable);
}

void _Magick_DrawableTextAlignment_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextAlignment_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextAlignment_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextAlignment_templ::InstanceMethod("call",
        &_Magick_DrawableTextAlignment_templ::_wrap_Magick_DrawableTextAlignment_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("alignment");
  members.insert({
    "alignment",
      _Magick_DrawableTextAlignment_templ::InstanceMethod("alignment",
        &_Magick_DrawableTextAlignment_templ::_wrap_DrawableTextAlignment__wrap_Magick_DrawableTextAlignment_alignment,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextAlignment_templ::InstanceMethod("copy",
        &_Magick_DrawableTextAlignment_templ::_wrap_Magick_DrawableTextAlignment_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextAntialias_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextAntialias_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextAntialias_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextAntialias__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextAntialias__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextAntialias_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAntialias_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAntialias_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAntialias_flag__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextAntialias_flag__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextAntialias__wrap_Magick_DrawableTextAntialias_flag(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextAntialias_inst : public _Magick_DrawableTextAntialias_templ<_Magick_DrawableTextAntialias_inst> {
public:
  using _Magick_DrawableTextAntialias_templ::_Magick_DrawableTextAntialias_templ;
  virtual ~_Magick_DrawableTextAntialias_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextAntialias_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextAntialias_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextAntialias (_Magick_DrawableTextAntialias) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextAntialias_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextAntialias_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextAntialias_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextAntialias_inst>::DefineClass(env, "DrawableTextAntialias", symbolTable);
}

void _Magick_DrawableTextAntialias_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextAntialias_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextAntialias_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextAntialias_templ::InstanceMethod("call",
        &_Magick_DrawableTextAntialias_templ::_wrap_Magick_DrawableTextAntialias_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextAntialias_templ::InstanceMethod("copy",
        &_Magick_DrawableTextAntialias_templ::_wrap_Magick_DrawableTextAntialias_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("flag");
  members.insert({
    "flag",
      _Magick_DrawableTextAntialias_templ::InstanceMethod("flag",
        &_Magick_DrawableTextAntialias_templ::_wrap_DrawableTextAntialias__wrap_Magick_DrawableTextAntialias_flag,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextDecoration_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextDecoration_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextDecoration_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextDecoration__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextDecoration__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextDecoration_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDecoration_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDecoration_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDecoration_decoration__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDecoration_decoration__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextDecoration__wrap_Magick_DrawableTextDecoration_decoration(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextDecoration_inst : public _Magick_DrawableTextDecoration_templ<_Magick_DrawableTextDecoration_inst> {
public:
  using _Magick_DrawableTextDecoration_templ::_Magick_DrawableTextDecoration_templ;
  virtual ~_Magick_DrawableTextDecoration_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextDecoration_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextDecoration_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextDecoration (_Magick_DrawableTextDecoration) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextDecoration_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextDecoration_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextDecoration_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextDecoration_inst>::DefineClass(env, "DrawableTextDecoration", symbolTable);
}

void _Magick_DrawableTextDecoration_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextDecoration_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextDecoration_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextDecoration_templ::InstanceMethod("call",
        &_Magick_DrawableTextDecoration_templ::_wrap_Magick_DrawableTextDecoration_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextDecoration_templ::InstanceMethod("copy",
        &_Magick_DrawableTextDecoration_templ::_wrap_Magick_DrawableTextDecoration_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("decoration");
  members.insert({
    "decoration",
      _Magick_DrawableTextDecoration_templ::InstanceMethod("decoration",
        &_Magick_DrawableTextDecoration_templ::_wrap_DrawableTextDecoration__wrap_Magick_DrawableTextDecoration_decoration,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextDirection_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextDirection_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextDirection_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextDirection(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextDirection_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDirection_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDirection_direction__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDirection_direction__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextDirection__wrap_Magick_DrawableTextDirection_direction(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextDirection_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextDirection_inst : public _Magick_DrawableTextDirection_templ<_Magick_DrawableTextDirection_inst> {
public:
  using _Magick_DrawableTextDirection_templ::_Magick_DrawableTextDirection_templ;
  virtual ~_Magick_DrawableTextDirection_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextDirection_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextDirection_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextDirection (_Magick_DrawableTextDirection) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextDirection_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextDirection_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextDirection_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextDirection_inst>::DefineClass(env, "DrawableTextDirection", symbolTable);
}

void _Magick_DrawableTextDirection_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextDirection_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextDirection_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextDirection_templ::InstanceMethod("call",
        &_Magick_DrawableTextDirection_templ::_wrap_Magick_DrawableTextDirection_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("direction");
  members.insert({
    "direction",
      _Magick_DrawableTextDirection_templ::InstanceMethod("direction",
        &_Magick_DrawableTextDirection_templ::_wrap_DrawableTextDirection__wrap_Magick_DrawableTextDirection_direction,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextDirection_templ::InstanceMethod("copy",
        &_Magick_DrawableTextDirection_templ::_wrap_Magick_DrawableTextDirection_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextInterlineSpacing_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextInterlineSpacing_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextInterlineSpacing_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextInterlineSpacing(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextInterlineSpacing_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterlineSpacing_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextInterlineSpacing__wrap_Magick_DrawableTextInterlineSpacing_spacing(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterlineSpacing_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextInterlineSpacing_inst : public _Magick_DrawableTextInterlineSpacing_templ<_Magick_DrawableTextInterlineSpacing_inst> {
public:
  using _Magick_DrawableTextInterlineSpacing_templ::_Magick_DrawableTextInterlineSpacing_templ;
  virtual ~_Magick_DrawableTextInterlineSpacing_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextInterlineSpacing_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextInterlineSpacing_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextInterlineSpacing (_Magick_DrawableTextInterlineSpacing) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextInterlineSpacing_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextInterlineSpacing_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextInterlineSpacing_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextInterlineSpacing_inst>::DefineClass(env, "DrawableTextInterlineSpacing", symbolTable);
}

void _Magick_DrawableTextInterlineSpacing_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextInterlineSpacing_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextInterlineSpacing_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextInterlineSpacing_templ::InstanceMethod("call",
        &_Magick_DrawableTextInterlineSpacing_templ::_wrap_Magick_DrawableTextInterlineSpacing_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("spacing");
  members.insert({
    "spacing",
      _Magick_DrawableTextInterlineSpacing_templ::InstanceMethod("spacing",
        &_Magick_DrawableTextInterlineSpacing_templ::_wrap_DrawableTextInterlineSpacing__wrap_Magick_DrawableTextInterlineSpacing_spacing,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextInterlineSpacing_templ::InstanceMethod("copy",
        &_Magick_DrawableTextInterlineSpacing_templ::_wrap_Magick_DrawableTextInterlineSpacing_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextInterwordSpacing_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextInterwordSpacing_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextInterwordSpacing_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextInterwordSpacing(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextInterwordSpacing_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterwordSpacing_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextInterwordSpacing__wrap_Magick_DrawableTextInterwordSpacing_spacing(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextInterwordSpacing_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextInterwordSpacing_inst : public _Magick_DrawableTextInterwordSpacing_templ<_Magick_DrawableTextInterwordSpacing_inst> {
public:
  using _Magick_DrawableTextInterwordSpacing_templ::_Magick_DrawableTextInterwordSpacing_templ;
  virtual ~_Magick_DrawableTextInterwordSpacing_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextInterwordSpacing_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextInterwordSpacing_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextInterwordSpacing (_Magick_DrawableTextInterwordSpacing) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextInterwordSpacing_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextInterwordSpacing_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextInterwordSpacing_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextInterwordSpacing_inst>::DefineClass(env, "DrawableTextInterwordSpacing", symbolTable);
}

void _Magick_DrawableTextInterwordSpacing_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextInterwordSpacing_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextInterwordSpacing_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextInterwordSpacing_templ::InstanceMethod("call",
        &_Magick_DrawableTextInterwordSpacing_templ::_wrap_Magick_DrawableTextInterwordSpacing_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("spacing");
  members.insert({
    "spacing",
      _Magick_DrawableTextInterwordSpacing_templ::InstanceMethod("spacing",
        &_Magick_DrawableTextInterwordSpacing_templ::_wrap_DrawableTextInterwordSpacing__wrap_Magick_DrawableTextInterwordSpacing_spacing,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextInterwordSpacing_templ::InstanceMethod("copy",
        &_Magick_DrawableTextInterwordSpacing_templ::_wrap_Magick_DrawableTextInterwordSpacing_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextKerning_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextKerning_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextKerning_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextKerning(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextKerning_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextKerning_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextKerning_kerning__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextKerning_kerning__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextKerning__wrap_Magick_DrawableTextKerning_kerning(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextKerning_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextKerning_inst : public _Magick_DrawableTextKerning_templ<_Magick_DrawableTextKerning_inst> {
public:
  using _Magick_DrawableTextKerning_templ::_Magick_DrawableTextKerning_templ;
  virtual ~_Magick_DrawableTextKerning_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextKerning_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextKerning_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextKerning (_Magick_DrawableTextKerning) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextKerning_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextKerning_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextKerning_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextKerning_inst>::DefineClass(env, "DrawableTextKerning", symbolTable);
}

void _Magick_DrawableTextKerning_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextKerning_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextKerning_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextKerning_templ::InstanceMethod("call",
        &_Magick_DrawableTextKerning_templ::_wrap_Magick_DrawableTextKerning_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("kerning");
  members.insert({
    "kerning",
      _Magick_DrawableTextKerning_templ::InstanceMethod("kerning",
        &_Magick_DrawableTextKerning_templ::_wrap_DrawableTextKerning__wrap_Magick_DrawableTextKerning_kerning,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextKerning_templ::InstanceMethod("copy",
        &_Magick_DrawableTextKerning_templ::_wrap_Magick_DrawableTextKerning_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTextUnderColor_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTextUnderColor_templ(const Napi::CallbackInfo &);
_Magick_DrawableTextUnderColor_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextUnderColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTextUnderColor__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTextUnderColor_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextUnderColor_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextUnderColor_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextUnderColor_color__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTextUnderColor_color__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTextUnderColor__wrap_Magick_DrawableTextUnderColor_color(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTextUnderColor_inst : public _Magick_DrawableTextUnderColor_templ<_Magick_DrawableTextUnderColor_inst> {
public:
  using _Magick_DrawableTextUnderColor_templ::_Magick_DrawableTextUnderColor_templ;
  virtual ~_Magick_DrawableTextUnderColor_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTextUnderColor_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTextUnderColor_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTextUnderColor (_Magick_DrawableTextUnderColor) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTextUnderColor_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTextUnderColor_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTextUnderColor_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTextUnderColor_inst>::DefineClass(env, "DrawableTextUnderColor", symbolTable);
}

void _Magick_DrawableTextUnderColor_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTextUnderColor_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTextUnderColor_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTextUnderColor_templ::InstanceMethod("call",
        &_Magick_DrawableTextUnderColor_templ::_wrap_Magick_DrawableTextUnderColor_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTextUnderColor_templ::InstanceMethod("copy",
        &_Magick_DrawableTextUnderColor_templ::_wrap_Magick_DrawableTextUnderColor_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("color");
  members.insert({
    "color",
      _Magick_DrawableTextUnderColor_templ::InstanceMethod("color",
        &_Magick_DrawableTextUnderColor_templ::_wrap_DrawableTextUnderColor__wrap_Magick_DrawableTextUnderColor_color,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableTranslation_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableTranslation_templ(const Napi::CallbackInfo &);
_Magick_DrawableTranslation_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableTranslation(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableTranslation_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTranslation_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTranslation_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTranslation_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTranslation_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTranslation__wrap_Magick_DrawableTranslation_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTranslation_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableTranslation_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableTranslation__wrap_Magick_DrawableTranslation_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableTranslation_inst : public _Magick_DrawableTranslation_templ<_Magick_DrawableTranslation_inst> {
public:
  using _Magick_DrawableTranslation_templ::_Magick_DrawableTranslation_templ;
  virtual ~_Magick_DrawableTranslation_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableTranslation_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableTranslation_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableTranslation (_Magick_DrawableTranslation) */
// jsnapi_getclass
Napi::Function _Magick_DrawableTranslation_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableTranslation_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableTranslation_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableTranslation_inst>::DefineClass(env, "DrawableTranslation", symbolTable);
}

void _Magick_DrawableTranslation_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableTranslation_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableTranslation_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableTranslation_templ::InstanceMethod("call",
        &_Magick_DrawableTranslation_templ::_wrap_Magick_DrawableTranslation_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableTranslation_templ::InstanceMethod("copy",
        &_Magick_DrawableTranslation_templ::_wrap_Magick_DrawableTranslation_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_DrawableTranslation_templ::InstanceMethod("x",
        &_Magick_DrawableTranslation_templ::_wrap_DrawableTranslation__wrap_Magick_DrawableTranslation_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_DrawableTranslation_templ::InstanceMethod("y",
        &_Magick_DrawableTranslation_templ::_wrap_DrawableTranslation__wrap_Magick_DrawableTranslation_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_DrawableViewbox_templ : public _Magick_DrawableBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_DrawableViewbox_templ(const Napi::CallbackInfo &);
_Magick_DrawableViewbox_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_DrawableViewbox(const Napi::CallbackInfo &);
virtual ~_Magick_DrawableViewbox_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_x1__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_x1__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_x1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_y1__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_y1__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_y1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_x2__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_x2__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_x2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_y2__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_DrawableViewbox_y2__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_y2(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_DrawableViewbox_inst : public _Magick_DrawableViewbox_templ<_Magick_DrawableViewbox_inst> {
public:
  using _Magick_DrawableViewbox_templ::_Magick_DrawableViewbox_templ;
  virtual ~_Magick_DrawableViewbox_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_DrawableViewbox_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_DrawableViewbox_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: DrawableViewbox (_Magick_DrawableViewbox) */
// jsnapi_getclass
Napi::Function _Magick_DrawableViewbox_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_DrawableViewbox_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_DrawableViewbox_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_DrawableViewbox_inst>::DefineClass(env, "DrawableViewbox", symbolTable);
}

void _Magick_DrawableViewbox_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_DrawableViewbox_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_DrawableViewbox_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_DrawableBase_templ<_Magick_DrawableBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_DrawableBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableBase_templ::InstanceMethod("call",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableBase_templ::InstanceMethod("copy",
        &_Magick_DrawableBase_templ::_wrap_Magick_DrawableBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_DrawableViewbox_templ::InstanceMethod("call",
        &_Magick_DrawableViewbox_templ::_wrap_Magick_DrawableViewbox_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_DrawableViewbox_templ::InstanceMethod("copy",
        &_Magick_DrawableViewbox_templ::_wrap_Magick_DrawableViewbox_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x1");
  members.insert({
    "x1",
      _Magick_DrawableViewbox_templ::InstanceMethod("x1",
        &_Magick_DrawableViewbox_templ::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_x1,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y1");
  members.insert({
    "y1",
      _Magick_DrawableViewbox_templ::InstanceMethod("y1",
        &_Magick_DrawableViewbox_templ::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_y1,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x2");
  members.insert({
    "x2",
      _Magick_DrawableViewbox_templ::InstanceMethod("x2",
        &_Magick_DrawableViewbox_templ::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_x2,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y2");
  members.insert({
    "y2",
      _Magick_DrawableViewbox_templ::InstanceMethod("y2",
        &_Magick_DrawableViewbox_templ::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_y2,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathArcArgs_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathArcArgs_templ(const Napi::CallbackInfo &);
_Magick_PathArcArgs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcArgs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcArgs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcArgs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathArcArgs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_radiusX__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_radiusX__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathArcArgs__wrap_Magick_PathArcArgs_radiusX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_radiusY__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_radiusY__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathArcArgs__wrap_Magick_PathArcArgs_radiusY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_xAxisRotation__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_xAxisRotation__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathArcArgs__wrap_Magick_PathArcArgs_xAxisRotation(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_largeArcFlag__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_largeArcFlag__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathArcArgs__wrap_Magick_PathArcArgs_largeArcFlag(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_sweepFlag__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_sweepFlag__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathArcArgs__wrap_Magick_PathArcArgs_sweepFlag(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathArcArgs__wrap_Magick_PathArcArgs_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcArgs_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathArcArgs__wrap_Magick_PathArcArgs_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathArcArgs_inst : public _Magick_PathArcArgs_templ<_Magick_PathArcArgs_inst> {
public:
  using _Magick_PathArcArgs_templ::_Magick_PathArcArgs_templ;
  virtual ~_Magick_PathArcArgs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathArcArgs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathArcArgs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathArcArgs (_Magick_PathArcArgs) */
// jsnapi_getclass
Napi::Function _Magick_PathArcArgs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathArcArgs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathArcArgs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathArcArgs_inst>::DefineClass(env, "PathArcArgs", symbolTable);
}

void _Magick_PathArcArgs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathArcArgs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathArcArgs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("radiusX");
  members.insert({
    "radiusX",
      _Magick_PathArcArgs_templ::InstanceMethod("radiusX",
        &_Magick_PathArcArgs_templ::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_radiusX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("radiusY");
  members.insert({
    "radiusY",
      _Magick_PathArcArgs_templ::InstanceMethod("radiusY",
        &_Magick_PathArcArgs_templ::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_radiusY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("xAxisRotation");
  members.insert({
    "xAxisRotation",
      _Magick_PathArcArgs_templ::InstanceMethod("xAxisRotation",
        &_Magick_PathArcArgs_templ::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_xAxisRotation,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("largeArcFlag");
  members.insert({
    "largeArcFlag",
      _Magick_PathArcArgs_templ::InstanceMethod("largeArcFlag",
        &_Magick_PathArcArgs_templ::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_largeArcFlag,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sweepFlag");
  members.insert({
    "sweepFlag",
      _Magick_PathArcArgs_templ::InstanceMethod("sweepFlag",
        &_Magick_PathArcArgs_templ::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_sweepFlag,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_PathArcArgs_templ::InstanceMethod("x",
        &_Magick_PathArcArgs_templ::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_PathArcArgs_templ::InstanceMethod("y",
        &_Magick_PathArcArgs_templ::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gt__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lt__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gte__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lte__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathArcAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathArcAbs_templ(const Napi::CallbackInfo &);
_Magick_PathArcAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcAbs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcAbs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcAbs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathArcAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathArcAbs_inst : public _Magick_PathArcAbs_templ<_Magick_PathArcAbs_inst> {
public:
  using _Magick_PathArcAbs_templ::_Magick_PathArcAbs_templ;
  virtual ~_Magick_PathArcAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathArcAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathArcAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathArcAbs (_Magick_PathArcAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathArcAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathArcAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathArcAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathArcAbs_inst>::DefineClass(env, "PathArcAbs", symbolTable);
}

void _Magick_PathArcAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathArcAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathArcAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathArcAbs_templ::InstanceMethod("call",
        &_Magick_PathArcAbs_templ::_wrap_Magick_PathArcAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathArcAbs_templ::InstanceMethod("copy",
        &_Magick_PathArcAbs_templ::_wrap_Magick_PathArcAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathArcRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathArcRel_templ(const Napi::CallbackInfo &);
_Magick_PathArcRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcRel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcRel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathArcRel__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathArcRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathArcRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathArcRel_inst : public _Magick_PathArcRel_templ<_Magick_PathArcRel_inst> {
public:
  using _Magick_PathArcRel_templ::_Magick_PathArcRel_templ;
  virtual ~_Magick_PathArcRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathArcRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathArcRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathArcRel (_Magick_PathArcRel) */
// jsnapi_getclass
Napi::Function _Magick_PathArcRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathArcRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathArcRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathArcRel_inst>::DefineClass(env, "PathArcRel", symbolTable);
}

void _Magick_PathArcRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathArcRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathArcRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathArcRel_templ::InstanceMethod("call",
        &_Magick_PathArcRel_templ::_wrap_Magick_PathArcRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathArcRel_templ::InstanceMethod("copy",
        &_Magick_PathArcRel_templ::_wrap_Magick_PathArcRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathClosePath_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathClosePath_templ(const Napi::CallbackInfo &);
_Magick_PathClosePath_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathClosePath(const Napi::CallbackInfo &);
virtual ~_Magick_PathClosePath_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathClosePath_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathClosePath_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathClosePath_inst : public _Magick_PathClosePath_templ<_Magick_PathClosePath_inst> {
public:
  using _Magick_PathClosePath_templ::_Magick_PathClosePath_templ;
  virtual ~_Magick_PathClosePath_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathClosePath_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathClosePath_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathClosePath (_Magick_PathClosePath) */
// jsnapi_getclass
Napi::Function _Magick_PathClosePath_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathClosePath_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathClosePath_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathClosePath_inst>::DefineClass(env, "PathClosePath", symbolTable);
}

void _Magick_PathClosePath_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathClosePath_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathClosePath_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathClosePath_templ::InstanceMethod("call",
        &_Magick_PathClosePath_templ::_wrap_Magick_PathClosePath_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathClosePath_templ::InstanceMethod("copy",
        &_Magick_PathClosePath_templ::_wrap_Magick_PathClosePath_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathCurvetoArgs_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathCurvetoArgs_templ(const Napi::CallbackInfo &);
_Magick_PathCurvetoArgs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoArgs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoArgs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoArgs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathCurvetoArgs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_x1__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_x1__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_y1__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_y1__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_x2__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_x2__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_y2__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_y2__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoArgs_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathCurvetoArgs_inst : public _Magick_PathCurvetoArgs_templ<_Magick_PathCurvetoArgs_inst> {
public:
  using _Magick_PathCurvetoArgs_templ::_Magick_PathCurvetoArgs_templ;
  virtual ~_Magick_PathCurvetoArgs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathCurvetoArgs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathCurvetoArgs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathCurvetoArgs (_Magick_PathCurvetoArgs) */
// jsnapi_getclass
Napi::Function _Magick_PathCurvetoArgs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathCurvetoArgs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathCurvetoArgs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathCurvetoArgs_inst>::DefineClass(env, "PathCurvetoArgs", symbolTable);
}

void _Magick_PathCurvetoArgs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathCurvetoArgs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathCurvetoArgs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("x1");
  members.insert({
    "x1",
      _Magick_PathCurvetoArgs_templ::InstanceMethod("x1",
        &_Magick_PathCurvetoArgs_templ::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x1,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y1");
  members.insert({
    "y1",
      _Magick_PathCurvetoArgs_templ::InstanceMethod("y1",
        &_Magick_PathCurvetoArgs_templ::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y1,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x2");
  members.insert({
    "x2",
      _Magick_PathCurvetoArgs_templ::InstanceMethod("x2",
        &_Magick_PathCurvetoArgs_templ::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x2,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y2");
  members.insert({
    "y2",
      _Magick_PathCurvetoArgs_templ::InstanceMethod("y2",
        &_Magick_PathCurvetoArgs_templ::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y2,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_PathCurvetoArgs_templ::InstanceMethod("x",
        &_Magick_PathCurvetoArgs_templ::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_PathCurvetoArgs_templ::InstanceMethod("y",
        &_Magick_PathCurvetoArgs_templ::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gt__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lt__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gte__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lte__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathCurvetoAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathCurvetoAbs_templ(const Napi::CallbackInfo &);
_Magick_PathCurvetoAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoAbs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoAbs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoAbs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathCurvetoAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathCurvetoAbs_inst : public _Magick_PathCurvetoAbs_templ<_Magick_PathCurvetoAbs_inst> {
public:
  using _Magick_PathCurvetoAbs_templ::_Magick_PathCurvetoAbs_templ;
  virtual ~_Magick_PathCurvetoAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathCurvetoAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathCurvetoAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathCurvetoAbs (_Magick_PathCurvetoAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathCurvetoAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathCurvetoAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathCurvetoAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathCurvetoAbs_inst>::DefineClass(env, "PathCurvetoAbs", symbolTable);
}

void _Magick_PathCurvetoAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathCurvetoAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathCurvetoAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathCurvetoAbs_templ::InstanceMethod("call",
        &_Magick_PathCurvetoAbs_templ::_wrap_Magick_PathCurvetoAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathCurvetoAbs_templ::InstanceMethod("copy",
        &_Magick_PathCurvetoAbs_templ::_wrap_Magick_PathCurvetoAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathCurvetoRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathCurvetoRel_templ(const Napi::CallbackInfo &);
_Magick_PathCurvetoRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoRel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoRel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathCurvetoRel__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathCurvetoRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathCurvetoRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathCurvetoRel_inst : public _Magick_PathCurvetoRel_templ<_Magick_PathCurvetoRel_inst> {
public:
  using _Magick_PathCurvetoRel_templ::_Magick_PathCurvetoRel_templ;
  virtual ~_Magick_PathCurvetoRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathCurvetoRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathCurvetoRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathCurvetoRel (_Magick_PathCurvetoRel) */
// jsnapi_getclass
Napi::Function _Magick_PathCurvetoRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathCurvetoRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathCurvetoRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathCurvetoRel_inst>::DefineClass(env, "PathCurvetoRel", symbolTable);
}

void _Magick_PathCurvetoRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathCurvetoRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathCurvetoRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathCurvetoRel_templ::InstanceMethod("call",
        &_Magick_PathCurvetoRel_templ::_wrap_Magick_PathCurvetoRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathCurvetoRel_templ::InstanceMethod("copy",
        &_Magick_PathCurvetoRel_templ::_wrap_Magick_PathCurvetoRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathSmoothCurvetoAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathSmoothCurvetoAbs_templ(const Napi::CallbackInfo &);
_Magick_PathSmoothCurvetoAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathSmoothCurvetoAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothCurvetoAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothCurvetoAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathSmoothCurvetoAbs_inst : public _Magick_PathSmoothCurvetoAbs_templ<_Magick_PathSmoothCurvetoAbs_inst> {
public:
  using _Magick_PathSmoothCurvetoAbs_templ::_Magick_PathSmoothCurvetoAbs_templ;
  virtual ~_Magick_PathSmoothCurvetoAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathSmoothCurvetoAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathSmoothCurvetoAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathSmoothCurvetoAbs (_Magick_PathSmoothCurvetoAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathSmoothCurvetoAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathSmoothCurvetoAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathSmoothCurvetoAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathSmoothCurvetoAbs_inst>::DefineClass(env, "PathSmoothCurvetoAbs", symbolTable);
}

void _Magick_PathSmoothCurvetoAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathSmoothCurvetoAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathSmoothCurvetoAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathSmoothCurvetoAbs_templ::InstanceMethod("call",
        &_Magick_PathSmoothCurvetoAbs_templ::_wrap_Magick_PathSmoothCurvetoAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathSmoothCurvetoAbs_templ::InstanceMethod("copy",
        &_Magick_PathSmoothCurvetoAbs_templ::_wrap_Magick_PathSmoothCurvetoAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathSmoothCurvetoRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathSmoothCurvetoRel_templ(const Napi::CallbackInfo &);
_Magick_PathSmoothCurvetoRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathSmoothCurvetoRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothCurvetoRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothCurvetoRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathSmoothCurvetoRel_inst : public _Magick_PathSmoothCurvetoRel_templ<_Magick_PathSmoothCurvetoRel_inst> {
public:
  using _Magick_PathSmoothCurvetoRel_templ::_Magick_PathSmoothCurvetoRel_templ;
  virtual ~_Magick_PathSmoothCurvetoRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathSmoothCurvetoRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathSmoothCurvetoRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathSmoothCurvetoRel (_Magick_PathSmoothCurvetoRel) */
// jsnapi_getclass
Napi::Function _Magick_PathSmoothCurvetoRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathSmoothCurvetoRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathSmoothCurvetoRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathSmoothCurvetoRel_inst>::DefineClass(env, "PathSmoothCurvetoRel", symbolTable);
}

void _Magick_PathSmoothCurvetoRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathSmoothCurvetoRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathSmoothCurvetoRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathSmoothCurvetoRel_templ::InstanceMethod("call",
        &_Magick_PathSmoothCurvetoRel_templ::_wrap_Magick_PathSmoothCurvetoRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathSmoothCurvetoRel_templ::InstanceMethod("copy",
        &_Magick_PathSmoothCurvetoRel_templ::_wrap_Magick_PathSmoothCurvetoRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathQuadraticCurvetoArgs_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathQuadraticCurvetoArgs_templ(const Napi::CallbackInfo &);
_Magick_PathQuadraticCurvetoArgs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathQuadraticCurvetoArgs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_x1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_y1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_x(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathQuadraticCurvetoArgs_inst : public _Magick_PathQuadraticCurvetoArgs_templ<_Magick_PathQuadraticCurvetoArgs_inst> {
public:
  using _Magick_PathQuadraticCurvetoArgs_templ::_Magick_PathQuadraticCurvetoArgs_templ;
  virtual ~_Magick_PathQuadraticCurvetoArgs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathQuadraticCurvetoArgs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathQuadraticCurvetoArgs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathQuadraticCurvetoArgs (_Magick_PathQuadraticCurvetoArgs) */
// jsnapi_getclass
Napi::Function _Magick_PathQuadraticCurvetoArgs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathQuadraticCurvetoArgs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathQuadraticCurvetoArgs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathQuadraticCurvetoArgs_inst>::DefineClass(env, "PathQuadraticCurvetoArgs", symbolTable);
}

void _Magick_PathQuadraticCurvetoArgs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathQuadraticCurvetoArgs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathQuadraticCurvetoArgs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("x1");
  members.insert({
    "x1",
      _Magick_PathQuadraticCurvetoArgs_templ::InstanceMethod("x1",
        &_Magick_PathQuadraticCurvetoArgs_templ::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_x1,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y1");
  members.insert({
    "y1",
      _Magick_PathQuadraticCurvetoArgs_templ::InstanceMethod("y1",
        &_Magick_PathQuadraticCurvetoArgs_templ::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_y1,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_PathQuadraticCurvetoArgs_templ::InstanceMethod("x",
        &_Magick_PathQuadraticCurvetoArgs_templ::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_PathQuadraticCurvetoArgs_templ::InstanceMethod("y",
        &_Magick_PathQuadraticCurvetoArgs_templ::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gt__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lt__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gte__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lte__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathQuadraticCurvetoAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathQuadraticCurvetoAbs_templ(const Napi::CallbackInfo &);
_Magick_PathQuadraticCurvetoAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathQuadraticCurvetoAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathQuadraticCurvetoAbs_inst : public _Magick_PathQuadraticCurvetoAbs_templ<_Magick_PathQuadraticCurvetoAbs_inst> {
public:
  using _Magick_PathQuadraticCurvetoAbs_templ::_Magick_PathQuadraticCurvetoAbs_templ;
  virtual ~_Magick_PathQuadraticCurvetoAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathQuadraticCurvetoAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathQuadraticCurvetoAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathQuadraticCurvetoAbs (_Magick_PathQuadraticCurvetoAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathQuadraticCurvetoAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathQuadraticCurvetoAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathQuadraticCurvetoAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathQuadraticCurvetoAbs_inst>::DefineClass(env, "PathQuadraticCurvetoAbs", symbolTable);
}

void _Magick_PathQuadraticCurvetoAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathQuadraticCurvetoAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathQuadraticCurvetoAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathQuadraticCurvetoAbs_templ::InstanceMethod("call",
        &_Magick_PathQuadraticCurvetoAbs_templ::_wrap_Magick_PathQuadraticCurvetoAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathQuadraticCurvetoAbs_templ::InstanceMethod("copy",
        &_Magick_PathQuadraticCurvetoAbs_templ::_wrap_Magick_PathQuadraticCurvetoAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathQuadraticCurvetoRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathQuadraticCurvetoRel_templ(const Napi::CallbackInfo &);
_Magick_PathQuadraticCurvetoRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathQuadraticCurvetoRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathQuadraticCurvetoRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathQuadraticCurvetoRel_inst : public _Magick_PathQuadraticCurvetoRel_templ<_Magick_PathQuadraticCurvetoRel_inst> {
public:
  using _Magick_PathQuadraticCurvetoRel_templ::_Magick_PathQuadraticCurvetoRel_templ;
  virtual ~_Magick_PathQuadraticCurvetoRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathQuadraticCurvetoRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathQuadraticCurvetoRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathQuadraticCurvetoRel (_Magick_PathQuadraticCurvetoRel) */
// jsnapi_getclass
Napi::Function _Magick_PathQuadraticCurvetoRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathQuadraticCurvetoRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathQuadraticCurvetoRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathQuadraticCurvetoRel_inst>::DefineClass(env, "PathQuadraticCurvetoRel", symbolTable);
}

void _Magick_PathQuadraticCurvetoRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathQuadraticCurvetoRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathQuadraticCurvetoRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathQuadraticCurvetoRel_templ::InstanceMethod("call",
        &_Magick_PathQuadraticCurvetoRel_templ::_wrap_Magick_PathQuadraticCurvetoRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathQuadraticCurvetoRel_templ::InstanceMethod("copy",
        &_Magick_PathQuadraticCurvetoRel_templ::_wrap_Magick_PathQuadraticCurvetoRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathSmoothQuadraticCurvetoAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathSmoothQuadraticCurvetoAbs_templ(const Napi::CallbackInfo &);
_Magick_PathSmoothQuadraticCurvetoAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathSmoothQuadraticCurvetoAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothQuadraticCurvetoAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothQuadraticCurvetoAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathSmoothQuadraticCurvetoAbs_inst : public _Magick_PathSmoothQuadraticCurvetoAbs_templ<_Magick_PathSmoothQuadraticCurvetoAbs_inst> {
public:
  using _Magick_PathSmoothQuadraticCurvetoAbs_templ::_Magick_PathSmoothQuadraticCurvetoAbs_templ;
  virtual ~_Magick_PathSmoothQuadraticCurvetoAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathSmoothQuadraticCurvetoAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathSmoothQuadraticCurvetoAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathSmoothQuadraticCurvetoAbs (_Magick_PathSmoothQuadraticCurvetoAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathSmoothQuadraticCurvetoAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathSmoothQuadraticCurvetoAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathSmoothQuadraticCurvetoAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathSmoothQuadraticCurvetoAbs_inst>::DefineClass(env, "PathSmoothQuadraticCurvetoAbs", symbolTable);
}

void _Magick_PathSmoothQuadraticCurvetoAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathSmoothQuadraticCurvetoAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathSmoothQuadraticCurvetoAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathSmoothQuadraticCurvetoAbs_templ::InstanceMethod("call",
        &_Magick_PathSmoothQuadraticCurvetoAbs_templ::_wrap_Magick_PathSmoothQuadraticCurvetoAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathSmoothQuadraticCurvetoAbs_templ::InstanceMethod("copy",
        &_Magick_PathSmoothQuadraticCurvetoAbs_templ::_wrap_Magick_PathSmoothQuadraticCurvetoAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathSmoothQuadraticCurvetoRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathSmoothQuadraticCurvetoRel_templ(const Napi::CallbackInfo &);
_Magick_PathSmoothQuadraticCurvetoRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathSmoothQuadraticCurvetoRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothQuadraticCurvetoRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathSmoothQuadraticCurvetoRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathSmoothQuadraticCurvetoRel_inst : public _Magick_PathSmoothQuadraticCurvetoRel_templ<_Magick_PathSmoothQuadraticCurvetoRel_inst> {
public:
  using _Magick_PathSmoothQuadraticCurvetoRel_templ::_Magick_PathSmoothQuadraticCurvetoRel_templ;
  virtual ~_Magick_PathSmoothQuadraticCurvetoRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathSmoothQuadraticCurvetoRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathSmoothQuadraticCurvetoRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathSmoothQuadraticCurvetoRel (_Magick_PathSmoothQuadraticCurvetoRel) */
// jsnapi_getclass
Napi::Function _Magick_PathSmoothQuadraticCurvetoRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathSmoothQuadraticCurvetoRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathSmoothQuadraticCurvetoRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathSmoothQuadraticCurvetoRel_inst>::DefineClass(env, "PathSmoothQuadraticCurvetoRel", symbolTable);
}

void _Magick_PathSmoothQuadraticCurvetoRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathSmoothQuadraticCurvetoRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathSmoothQuadraticCurvetoRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathSmoothQuadraticCurvetoRel_templ::InstanceMethod("call",
        &_Magick_PathSmoothQuadraticCurvetoRel_templ::_wrap_Magick_PathSmoothQuadraticCurvetoRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathSmoothQuadraticCurvetoRel_templ::InstanceMethod("copy",
        &_Magick_PathSmoothQuadraticCurvetoRel_templ::_wrap_Magick_PathSmoothQuadraticCurvetoRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathLinetoAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathLinetoAbs_templ(const Napi::CallbackInfo &);
_Magick_PathLinetoAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoAbs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoAbs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoAbs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathLinetoAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathLinetoAbs_inst : public _Magick_PathLinetoAbs_templ<_Magick_PathLinetoAbs_inst> {
public:
  using _Magick_PathLinetoAbs_templ::_Magick_PathLinetoAbs_templ;
  virtual ~_Magick_PathLinetoAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathLinetoAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathLinetoAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathLinetoAbs (_Magick_PathLinetoAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathLinetoAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathLinetoAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathLinetoAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathLinetoAbs_inst>::DefineClass(env, "PathLinetoAbs", symbolTable);
}

void _Magick_PathLinetoAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathLinetoAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathLinetoAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathLinetoAbs_templ::InstanceMethod("call",
        &_Magick_PathLinetoAbs_templ::_wrap_Magick_PathLinetoAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathLinetoAbs_templ::InstanceMethod("copy",
        &_Magick_PathLinetoAbs_templ::_wrap_Magick_PathLinetoAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathLinetoRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathLinetoRel_templ(const Napi::CallbackInfo &);
_Magick_PathLinetoRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoRel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoRel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoRel__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathLinetoRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathLinetoRel_inst : public _Magick_PathLinetoRel_templ<_Magick_PathLinetoRel_inst> {
public:
  using _Magick_PathLinetoRel_templ::_Magick_PathLinetoRel_templ;
  virtual ~_Magick_PathLinetoRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathLinetoRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathLinetoRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathLinetoRel (_Magick_PathLinetoRel) */
// jsnapi_getclass
Napi::Function _Magick_PathLinetoRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathLinetoRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathLinetoRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathLinetoRel_inst>::DefineClass(env, "PathLinetoRel", symbolTable);
}

void _Magick_PathLinetoRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathLinetoRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathLinetoRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathLinetoRel_templ::InstanceMethod("call",
        &_Magick_PathLinetoRel_templ::_wrap_Magick_PathLinetoRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathLinetoRel_templ::InstanceMethod("copy",
        &_Magick_PathLinetoRel_templ::_wrap_Magick_PathLinetoRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathLinetoHorizontalAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathLinetoHorizontalAbs_templ(const Napi::CallbackInfo &);
_Magick_PathLinetoHorizontalAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoHorizontalAbs(const Napi::CallbackInfo &);
virtual ~_Magick_PathLinetoHorizontalAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathLinetoHorizontalAbs__wrap_Magick_PathLinetoHorizontalAbs_x(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathLinetoHorizontalAbs_inst : public _Magick_PathLinetoHorizontalAbs_templ<_Magick_PathLinetoHorizontalAbs_inst> {
public:
  using _Magick_PathLinetoHorizontalAbs_templ::_Magick_PathLinetoHorizontalAbs_templ;
  virtual ~_Magick_PathLinetoHorizontalAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathLinetoHorizontalAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathLinetoHorizontalAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathLinetoHorizontalAbs (_Magick_PathLinetoHorizontalAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathLinetoHorizontalAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathLinetoHorizontalAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathLinetoHorizontalAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathLinetoHorizontalAbs_inst>::DefineClass(env, "PathLinetoHorizontalAbs", symbolTable);
}

void _Magick_PathLinetoHorizontalAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathLinetoHorizontalAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathLinetoHorizontalAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathLinetoHorizontalAbs_templ::InstanceMethod("call",
        &_Magick_PathLinetoHorizontalAbs_templ::_wrap_Magick_PathLinetoHorizontalAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathLinetoHorizontalAbs_templ::InstanceMethod("copy",
        &_Magick_PathLinetoHorizontalAbs_templ::_wrap_Magick_PathLinetoHorizontalAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_PathLinetoHorizontalAbs_templ::InstanceMethod("x",
        &_Magick_PathLinetoHorizontalAbs_templ::_wrap_PathLinetoHorizontalAbs__wrap_Magick_PathLinetoHorizontalAbs_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathLinetoHorizontalRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathLinetoHorizontalRel_templ(const Napi::CallbackInfo &);
_Magick_PathLinetoHorizontalRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoHorizontalRel(const Napi::CallbackInfo &);
virtual ~_Magick_PathLinetoHorizontalRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalRel_x__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoHorizontalRel_x__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathLinetoHorizontalRel__wrap_Magick_PathLinetoHorizontalRel_x(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathLinetoHorizontalRel_inst : public _Magick_PathLinetoHorizontalRel_templ<_Magick_PathLinetoHorizontalRel_inst> {
public:
  using _Magick_PathLinetoHorizontalRel_templ::_Magick_PathLinetoHorizontalRel_templ;
  virtual ~_Magick_PathLinetoHorizontalRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathLinetoHorizontalRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathLinetoHorizontalRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathLinetoHorizontalRel (_Magick_PathLinetoHorizontalRel) */
// jsnapi_getclass
Napi::Function _Magick_PathLinetoHorizontalRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathLinetoHorizontalRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathLinetoHorizontalRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathLinetoHorizontalRel_inst>::DefineClass(env, "PathLinetoHorizontalRel", symbolTable);
}

void _Magick_PathLinetoHorizontalRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathLinetoHorizontalRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathLinetoHorizontalRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathLinetoHorizontalRel_templ::InstanceMethod("call",
        &_Magick_PathLinetoHorizontalRel_templ::_wrap_Magick_PathLinetoHorizontalRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathLinetoHorizontalRel_templ::InstanceMethod("copy",
        &_Magick_PathLinetoHorizontalRel_templ::_wrap_Magick_PathLinetoHorizontalRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x");
  members.insert({
    "x",
      _Magick_PathLinetoHorizontalRel_templ::InstanceMethod("x",
        &_Magick_PathLinetoHorizontalRel_templ::_wrap_PathLinetoHorizontalRel__wrap_Magick_PathLinetoHorizontalRel_x,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathLinetoVerticalAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathLinetoVerticalAbs_templ(const Napi::CallbackInfo &);
_Magick_PathLinetoVerticalAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoVerticalAbs(const Napi::CallbackInfo &);
virtual ~_Magick_PathLinetoVerticalAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalAbs_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalAbs_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathLinetoVerticalAbs__wrap_Magick_PathLinetoVerticalAbs_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathLinetoVerticalAbs_inst : public _Magick_PathLinetoVerticalAbs_templ<_Magick_PathLinetoVerticalAbs_inst> {
public:
  using _Magick_PathLinetoVerticalAbs_templ::_Magick_PathLinetoVerticalAbs_templ;
  virtual ~_Magick_PathLinetoVerticalAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathLinetoVerticalAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathLinetoVerticalAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathLinetoVerticalAbs (_Magick_PathLinetoVerticalAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathLinetoVerticalAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathLinetoVerticalAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathLinetoVerticalAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathLinetoVerticalAbs_inst>::DefineClass(env, "PathLinetoVerticalAbs", symbolTable);
}

void _Magick_PathLinetoVerticalAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathLinetoVerticalAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathLinetoVerticalAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathLinetoVerticalAbs_templ::InstanceMethod("call",
        &_Magick_PathLinetoVerticalAbs_templ::_wrap_Magick_PathLinetoVerticalAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathLinetoVerticalAbs_templ::InstanceMethod("copy",
        &_Magick_PathLinetoVerticalAbs_templ::_wrap_Magick_PathLinetoVerticalAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_PathLinetoVerticalAbs_templ::InstanceMethod("y",
        &_Magick_PathLinetoVerticalAbs_templ::_wrap_PathLinetoVerticalAbs__wrap_Magick_PathLinetoVerticalAbs_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathLinetoVerticalRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathLinetoVerticalRel_templ(const Napi::CallbackInfo &);
_Magick_PathLinetoVerticalRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathLinetoVerticalRel(const Napi::CallbackInfo &);
virtual ~_Magick_PathLinetoVerticalRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalRel_y__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathLinetoVerticalRel_y__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_PathLinetoVerticalRel__wrap_Magick_PathLinetoVerticalRel_y(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathLinetoVerticalRel_inst : public _Magick_PathLinetoVerticalRel_templ<_Magick_PathLinetoVerticalRel_inst> {
public:
  using _Magick_PathLinetoVerticalRel_templ::_Magick_PathLinetoVerticalRel_templ;
  virtual ~_Magick_PathLinetoVerticalRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathLinetoVerticalRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathLinetoVerticalRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathLinetoVerticalRel (_Magick_PathLinetoVerticalRel) */
// jsnapi_getclass
Napi::Function _Magick_PathLinetoVerticalRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathLinetoVerticalRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathLinetoVerticalRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathLinetoVerticalRel_inst>::DefineClass(env, "PathLinetoVerticalRel", symbolTable);
}

void _Magick_PathLinetoVerticalRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathLinetoVerticalRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathLinetoVerticalRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathLinetoVerticalRel_templ::InstanceMethod("call",
        &_Magick_PathLinetoVerticalRel_templ::_wrap_Magick_PathLinetoVerticalRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathLinetoVerticalRel_templ::InstanceMethod("copy",
        &_Magick_PathLinetoVerticalRel_templ::_wrap_Magick_PathLinetoVerticalRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("y");
  members.insert({
    "y",
      _Magick_PathLinetoVerticalRel_templ::InstanceMethod("y",
        &_Magick_PathLinetoVerticalRel_templ::_wrap_PathLinetoVerticalRel__wrap_Magick_PathLinetoVerticalRel_y,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathMovetoAbs_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathMovetoAbs_templ(const Napi::CallbackInfo &);
_Magick_PathMovetoAbs_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathMovetoAbs__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathMovetoAbs__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathMovetoAbs__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathMovetoAbs_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathMovetoAbs_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathMovetoAbs_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathMovetoAbs_inst : public _Magick_PathMovetoAbs_templ<_Magick_PathMovetoAbs_inst> {
public:
  using _Magick_PathMovetoAbs_templ::_Magick_PathMovetoAbs_templ;
  virtual ~_Magick_PathMovetoAbs_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathMovetoAbs_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathMovetoAbs_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathMovetoAbs (_Magick_PathMovetoAbs) */
// jsnapi_getclass
Napi::Function _Magick_PathMovetoAbs_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathMovetoAbs_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathMovetoAbs_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathMovetoAbs_inst>::DefineClass(env, "PathMovetoAbs", symbolTable);
}

void _Magick_PathMovetoAbs_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathMovetoAbs_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathMovetoAbs_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathMovetoAbs_templ::InstanceMethod("call",
        &_Magick_PathMovetoAbs_templ::_wrap_Magick_PathMovetoAbs_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathMovetoAbs_templ::InstanceMethod("copy",
        &_Magick_PathMovetoAbs_templ::_wrap_Magick_PathMovetoAbs_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_PathMovetoRel_templ : public _Magick_VPathBase_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_PathMovetoRel_templ(const Napi::CallbackInfo &);
_Magick_PathMovetoRel_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathMovetoRel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathMovetoRel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_PathMovetoRel__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_PathMovetoRel_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathMovetoRel_call(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_PathMovetoRel_copy(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_PathMovetoRel_inst : public _Magick_PathMovetoRel_templ<_Magick_PathMovetoRel_inst> {
public:
  using _Magick_PathMovetoRel_templ::_Magick_PathMovetoRel_templ;
  virtual ~_Magick_PathMovetoRel_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_PathMovetoRel_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_PathMovetoRel_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: PathMovetoRel (_Magick_PathMovetoRel) */
// jsnapi_getclass
Napi::Function _Magick_PathMovetoRel_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_PathMovetoRel_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_PathMovetoRel_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_PathMovetoRel_inst>::DefineClass(env, "PathMovetoRel", symbolTable);
}

void _Magick_PathMovetoRel_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_PathMovetoRel_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_PathMovetoRel_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_VPathBase_templ<_Magick_VPathBase_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_VPathBase_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_VPathBase_templ::InstanceMethod("call",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_VPathBase_templ::InstanceMethod("copy",
        &_Magick_VPathBase_templ::_wrap_Magick_VPathBase_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_PathMovetoRel_templ::InstanceMethod("call",
        &_Magick_PathMovetoRel_templ::_wrap_Magick_PathMovetoRel_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copy");
  members.insert({
    "copy",
      _Magick_PathMovetoRel_templ::InstanceMethod("copy",
        &_Magick_PathMovetoRel_templ::_wrap_Magick_PathMovetoRel_copy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ErrorPolicy_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ErrorPolicy_templ(const Napi::CallbackInfo &);
_Magick_ErrorPolicy_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ErrorPolicy__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ErrorPolicy__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_ErrorPolicy_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ErrorPolicy_inst : public _Magick_ErrorPolicy_templ<_Magick_ErrorPolicy_inst> {
public:
  using _Magick_ErrorPolicy_templ::_Magick_ErrorPolicy_templ;
  virtual ~_Magick_ErrorPolicy_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ErrorPolicy_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ErrorPolicy_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ErrorPolicy (_Magick_ErrorPolicy) */
// jsnapi_getclass
Napi::Function _Magick_ErrorPolicy_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ErrorPolicy_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ErrorPolicy_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ErrorPolicy_inst>::DefineClass(env, "ErrorPolicy", symbolTable);
}

void _Magick_ErrorPolicy_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ErrorPolicy_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ErrorPolicy_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ErrorType_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ErrorType_templ(const Napi::CallbackInfo &);
_Magick_ErrorType_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ErrorType__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ErrorType__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_ErrorType_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ErrorType_inst : public _Magick_ErrorType_templ<_Magick_ErrorType_inst> {
public:
  using _Magick_ErrorType_templ::_Magick_ErrorType_templ;
  virtual ~_Magick_ErrorType_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ErrorType_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ErrorType_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ErrorType (_Magick_ErrorType) */
// jsnapi_getclass
Napi::Function _Magick_ErrorType_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ErrorType_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ErrorType_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ErrorType_inst>::DefineClass(env, "ErrorType", symbolTable);
}

void _Magick_ErrorType_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ErrorType_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ErrorType_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_WarningPolicy_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_WarningPolicy_templ(const Napi::CallbackInfo &);
_Magick_WarningPolicy_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_WarningPolicy__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_WarningPolicy__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_WarningPolicy_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_WarningPolicy_inst : public _Magick_WarningPolicy_templ<_Magick_WarningPolicy_inst> {
public:
  using _Magick_WarningPolicy_templ::_Magick_WarningPolicy_templ;
  virtual ~_Magick_WarningPolicy_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_WarningPolicy_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_WarningPolicy_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: WarningPolicy (_Magick_WarningPolicy) */
// jsnapi_getclass
Napi::Function _Magick_WarningPolicy_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_WarningPolicy_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_WarningPolicy_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_WarningPolicy_inst>::DefineClass(env, "WarningPolicy", symbolTable);
}

void _Magick_WarningPolicy_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_WarningPolicy_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_WarningPolicy_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_WarningType_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_WarningType_templ(const Napi::CallbackInfo &);
_Magick_WarningType_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_WarningType__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_WarningType__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_WarningType_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_WarningType_inst : public _Magick_WarningType_templ<_Magick_WarningType_inst> {
public:
  using _Magick_WarningType_templ::_Magick_WarningType_templ;
  virtual ~_Magick_WarningType_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_WarningType_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_WarningType_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: WarningType (_Magick_WarningType) */
// jsnapi_getclass
Napi::Function _Magick_WarningType_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_WarningType_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_WarningType_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_WarningType_inst>::DefineClass(env, "WarningType", symbolTable);
}

void _Magick_WarningType_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_WarningType_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_WarningType_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ChannelMoments_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ChannelMoments_templ(const Napi::CallbackInfo &);
_Magick_ChannelMoments_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelMoments__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelMoments__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_ChannelMoments_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_centroidX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_centroidY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_channel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_ellipseAxisX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_ellipseAxisY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_ellipseAngle(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_ellipseEccentricity(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_ellipseIntensity(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_huInvariants(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelMoments_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelMoments__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ChannelMoments_inst : public _Magick_ChannelMoments_templ<_Magick_ChannelMoments_inst> {
public:
  using _Magick_ChannelMoments_templ::_Magick_ChannelMoments_templ;
  virtual ~_Magick_ChannelMoments_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ChannelMoments_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ChannelMoments_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ChannelMoments (_Magick_ChannelMoments) */
// jsnapi_getclass
Napi::Function _Magick_ChannelMoments_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ChannelMoments_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ChannelMoments_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ChannelMoments_inst>::DefineClass(env, "ChannelMoments", symbolTable);
}

void _Magick_ChannelMoments_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ChannelMoments_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ChannelMoments_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("centroidX");
  members.insert({
    "centroidX",
      _Magick_ChannelMoments_templ::InstanceMethod("centroidX",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_centroidX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("centroidY");
  members.insert({
    "centroidY",
      _Magick_ChannelMoments_templ::InstanceMethod("centroidY",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_centroidY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channel");
  members.insert({
    "channel",
      _Magick_ChannelMoments_templ::InstanceMethod("channel",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_channel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ellipseAxisX");
  members.insert({
    "ellipseAxisX",
      _Magick_ChannelMoments_templ::InstanceMethod("ellipseAxisX",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_ellipseAxisX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ellipseAxisY");
  members.insert({
    "ellipseAxisY",
      _Magick_ChannelMoments_templ::InstanceMethod("ellipseAxisY",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_ellipseAxisY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ellipseAngle");
  members.insert({
    "ellipseAngle",
      _Magick_ChannelMoments_templ::InstanceMethod("ellipseAngle",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_ellipseAngle,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ellipseEccentricity");
  members.insert({
    "ellipseEccentricity",
      _Magick_ChannelMoments_templ::InstanceMethod("ellipseEccentricity",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_ellipseEccentricity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ellipseIntensity");
  members.insert({
    "ellipseIntensity",
      _Magick_ChannelMoments_templ::InstanceMethod("ellipseIntensity",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_ellipseIntensity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("huInvariants");
  members.insert({
    "huInvariants",
      _Magick_ChannelMoments_templ::InstanceMethod("huInvariants",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_huInvariants,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_ChannelMoments_templ::InstanceMethod("isValid",
        &_Magick_ChannelMoments_templ::_wrap_Magick_ChannelMoments_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ChannelPerceptualHash_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ChannelPerceptualHash_templ(const Napi::CallbackInfo &);
_Magick_ChannelPerceptualHash_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelPerceptualHash__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelPerceptualHash__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelPerceptualHash__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_ChannelPerceptualHash_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelPerceptualHash_toString(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelPerceptualHash_channel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelPerceptualHash_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelPerceptualHash_sumSquaredDifferences(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelPerceptualHash_srgbHuPhash(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelPerceptualHash_hclpHuPhash(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelPerceptualHash__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ChannelPerceptualHash_inst : public _Magick_ChannelPerceptualHash_templ<_Magick_ChannelPerceptualHash_inst> {
public:
  using _Magick_ChannelPerceptualHash_templ::_Magick_ChannelPerceptualHash_templ;
  virtual ~_Magick_ChannelPerceptualHash_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ChannelPerceptualHash_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ChannelPerceptualHash_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ChannelPerceptualHash (_Magick_ChannelPerceptualHash) */
// jsnapi_getclass
Napi::Function _Magick_ChannelPerceptualHash_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ChannelPerceptualHash_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ChannelPerceptualHash_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ChannelPerceptualHash_inst>::DefineClass(env, "ChannelPerceptualHash", symbolTable);
}

void _Magick_ChannelPerceptualHash_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ChannelPerceptualHash_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ChannelPerceptualHash_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_ChannelPerceptualHash_templ::InstanceMethod("toString",
        &_Magick_ChannelPerceptualHash_templ::_wrap_Magick_ChannelPerceptualHash_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channel");
  members.insert({
    "channel",
      _Magick_ChannelPerceptualHash_templ::InstanceMethod("channel",
        &_Magick_ChannelPerceptualHash_templ::_wrap_Magick_ChannelPerceptualHash_channel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_ChannelPerceptualHash_templ::InstanceMethod("isValid",
        &_Magick_ChannelPerceptualHash_templ::_wrap_Magick_ChannelPerceptualHash_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sumSquaredDifferences");
  members.insert({
    "sumSquaredDifferences",
      _Magick_ChannelPerceptualHash_templ::InstanceMethod("sumSquaredDifferences",
        &_Magick_ChannelPerceptualHash_templ::_wrap_Magick_ChannelPerceptualHash_sumSquaredDifferences,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("srgbHuPhash");
  members.insert({
    "srgbHuPhash",
      _Magick_ChannelPerceptualHash_templ::InstanceMethod("srgbHuPhash",
        &_Magick_ChannelPerceptualHash_templ::_wrap_Magick_ChannelPerceptualHash_srgbHuPhash,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("hclpHuPhash");
  members.insert({
    "hclpHuPhash",
      _Magick_ChannelPerceptualHash_templ::InstanceMethod("hclpHuPhash",
        &_Magick_ChannelPerceptualHash_templ::_wrap_Magick_ChannelPerceptualHash_hclpHuPhash,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ChannelStatistics_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ChannelStatistics_templ(const Napi::CallbackInfo &);
_Magick_ChannelStatistics_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelStatistics__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelStatistics__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_ChannelStatistics_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_area(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_channel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_depth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_entropy(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_kurtosis(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_maxima(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_mean(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_minima(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_skewness(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_standardDeviation(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_sum(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_sumCubed(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_sumFourthPower(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_sumSquared(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ChannelStatistics_variance(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ChannelStatistics__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ChannelStatistics_inst : public _Magick_ChannelStatistics_templ<_Magick_ChannelStatistics_inst> {
public:
  using _Magick_ChannelStatistics_templ::_Magick_ChannelStatistics_templ;
  virtual ~_Magick_ChannelStatistics_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ChannelStatistics_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ChannelStatistics_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ChannelStatistics (_Magick_ChannelStatistics) */
// jsnapi_getclass
Napi::Function _Magick_ChannelStatistics_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ChannelStatistics_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ChannelStatistics_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ChannelStatistics_inst>::DefineClass(env, "ChannelStatistics", symbolTable);
}

void _Magick_ChannelStatistics_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ChannelStatistics_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ChannelStatistics_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("area");
  members.insert({
    "area",
      _Magick_ChannelStatistics_templ::InstanceMethod("area",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_area,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channel");
  members.insert({
    "channel",
      _Magick_ChannelStatistics_templ::InstanceMethod("channel",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_channel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("depth");
  members.insert({
    "depth",
      _Magick_ChannelStatistics_templ::InstanceMethod("depth",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_depth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("entropy");
  members.insert({
    "entropy",
      _Magick_ChannelStatistics_templ::InstanceMethod("entropy",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_entropy,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_ChannelStatistics_templ::InstanceMethod("isValid",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("kurtosis");
  members.insert({
    "kurtosis",
      _Magick_ChannelStatistics_templ::InstanceMethod("kurtosis",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_kurtosis,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("maxima");
  members.insert({
    "maxima",
      _Magick_ChannelStatistics_templ::InstanceMethod("maxima",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_maxima,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("mean");
  members.insert({
    "mean",
      _Magick_ChannelStatistics_templ::InstanceMethod("mean",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_mean,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("minima");
  members.insert({
    "minima",
      _Magick_ChannelStatistics_templ::InstanceMethod("minima",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_minima,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("skewness");
  members.insert({
    "skewness",
      _Magick_ChannelStatistics_templ::InstanceMethod("skewness",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_skewness,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("standardDeviation");
  members.insert({
    "standardDeviation",
      _Magick_ChannelStatistics_templ::InstanceMethod("standardDeviation",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_standardDeviation,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sum");
  members.insert({
    "sum",
      _Magick_ChannelStatistics_templ::InstanceMethod("sum",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_sum,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sumCubed");
  members.insert({
    "sumCubed",
      _Magick_ChannelStatistics_templ::InstanceMethod("sumCubed",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_sumCubed,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sumFourthPower");
  members.insert({
    "sumFourthPower",
      _Magick_ChannelStatistics_templ::InstanceMethod("sumFourthPower",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_sumFourthPower,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sumSquared");
  members.insert({
    "sumSquared",
      _Magick_ChannelStatistics_templ::InstanceMethod("sumSquared",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_sumSquared,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("variance");
  members.insert({
    "variance",
      _Magick_ChannelStatistics_templ::InstanceMethod("variance",
        &_Magick_ChannelStatistics_templ::_wrap_Magick_ChannelStatistics_variance,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ImageMoments_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ImageMoments_templ(const Napi::CallbackInfo &);
_Magick_ImageMoments_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImageMoments__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImageMoments__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_ImageMoments_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ImageMoments_channel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImageMoments__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ImageMoments_inst : public _Magick_ImageMoments_templ<_Magick_ImageMoments_inst> {
public:
  using _Magick_ImageMoments_templ::_Magick_ImageMoments_templ;
  virtual ~_Magick_ImageMoments_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ImageMoments_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ImageMoments_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ImageMoments (_Magick_ImageMoments) */
// jsnapi_getclass
Napi::Function _Magick_ImageMoments_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ImageMoments_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ImageMoments_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ImageMoments_inst>::DefineClass(env, "ImageMoments", symbolTable);
}

void _Magick_ImageMoments_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ImageMoments_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ImageMoments_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("channel");
  members.insert({
    "channel",
      _Magick_ImageMoments_templ::InstanceMethod("channel",
        &_Magick_ImageMoments_templ::_wrap_Magick_ImageMoments_channel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ImagePerceptualHash_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ImagePerceptualHash_templ(const Napi::CallbackInfo &);
_Magick_ImagePerceptualHash_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImagePerceptualHash__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImagePerceptualHash__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImagePerceptualHash__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_ImagePerceptualHash_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ImagePerceptualHash_toString(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ImagePerceptualHash_channel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ImagePerceptualHash_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ImagePerceptualHash_sumSquaredDifferences(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImagePerceptualHash__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ImagePerceptualHash_inst : public _Magick_ImagePerceptualHash_templ<_Magick_ImagePerceptualHash_inst> {
public:
  using _Magick_ImagePerceptualHash_templ::_Magick_ImagePerceptualHash_templ;
  virtual ~_Magick_ImagePerceptualHash_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ImagePerceptualHash_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ImagePerceptualHash_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ImagePerceptualHash (_Magick_ImagePerceptualHash) */
// jsnapi_getclass
Napi::Function _Magick_ImagePerceptualHash_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ImagePerceptualHash_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ImagePerceptualHash_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ImagePerceptualHash_inst>::DefineClass(env, "ImagePerceptualHash", symbolTable);
}

void _Magick_ImagePerceptualHash_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ImagePerceptualHash_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ImagePerceptualHash_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("toString");
  members.insert({
    "toString",
      _Magick_ImagePerceptualHash_templ::InstanceMethod("toString",
        &_Magick_ImagePerceptualHash_templ::_wrap_Magick_ImagePerceptualHash_toString,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channel");
  members.insert({
    "channel",
      _Magick_ImagePerceptualHash_templ::InstanceMethod("channel",
        &_Magick_ImagePerceptualHash_templ::_wrap_Magick_ImagePerceptualHash_channel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_ImagePerceptualHash_templ::InstanceMethod("isValid",
        &_Magick_ImagePerceptualHash_templ::_wrap_Magick_ImagePerceptualHash_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sumSquaredDifferences");
  members.insert({
    "sumSquaredDifferences",
      _Magick_ImagePerceptualHash_templ::InstanceMethod("sumSquaredDifferences",
        &_Magick_ImagePerceptualHash_templ::_wrap_Magick_ImagePerceptualHash_sumSquaredDifferences,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ImageStatistics_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ImageStatistics_templ(const Napi::CallbackInfo &);
_Magick_ImageStatistics_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImageStatistics__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImageStatistics__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_ImageStatistics_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ImageStatistics_channel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ImageStatistics__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ImageStatistics_inst : public _Magick_ImageStatistics_templ<_Magick_ImageStatistics_inst> {
public:
  using _Magick_ImageStatistics_templ::_Magick_ImageStatistics_templ;
  virtual ~_Magick_ImageStatistics_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ImageStatistics_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ImageStatistics_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ImageStatistics (_Magick_ImageStatistics) */
// jsnapi_getclass
Napi::Function _Magick_ImageStatistics_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ImageStatistics_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ImageStatistics_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ImageStatistics_inst>::DefineClass(env, "ImageStatistics", symbolTable);
}

void _Magick_ImageStatistics_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ImageStatistics_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ImageStatistics_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("channel");
  members.insert({
    "channel",
      _Magick_ImageStatistics_templ::InstanceMethod("channel",
        &_Magick_ImageStatistics_templ::_wrap_Magick_ImageStatistics_channel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_TypeMetric_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_TypeMetric_templ(const Napi::CallbackInfo &);
_Magick_TypeMetric_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_TypeMetric(const Napi::CallbackInfo &);
virtual ~_Magick_TypeMetric_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_ascent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_bounds(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_descent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_maxHorizontalAdvance(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_origin(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_pixelsPerEm(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_textHeight(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_textWidth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_underlinePosition(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_TypeMetric_underlineThickness(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_TypeMetric_inst : public _Magick_TypeMetric_templ<_Magick_TypeMetric_inst> {
public:
  using _Magick_TypeMetric_templ::_Magick_TypeMetric_templ;
  virtual ~_Magick_TypeMetric_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_TypeMetric_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_TypeMetric_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: TypeMetric (_Magick_TypeMetric) */
// jsnapi_getclass
Napi::Function _Magick_TypeMetric_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_TypeMetric_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_TypeMetric_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_TypeMetric_inst>::DefineClass(env, "TypeMetric", symbolTable);
}

void _Magick_TypeMetric_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_TypeMetric_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_TypeMetric_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("ascent");
  members.insert({
    "ascent",
      _Magick_TypeMetric_templ::InstanceMethod("ascent",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_ascent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("bounds");
  members.insert({
    "bounds",
      _Magick_TypeMetric_templ::InstanceMethod("bounds",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_bounds,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("descent");
  members.insert({
    "descent",
      _Magick_TypeMetric_templ::InstanceMethod("descent",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_descent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("maxHorizontalAdvance");
  members.insert({
    "maxHorizontalAdvance",
      _Magick_TypeMetric_templ::InstanceMethod("maxHorizontalAdvance",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_maxHorizontalAdvance,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("origin");
  members.insert({
    "origin",
      _Magick_TypeMetric_templ::InstanceMethod("origin",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_origin,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelsPerEm");
  members.insert({
    "pixelsPerEm",
      _Magick_TypeMetric_templ::InstanceMethod("pixelsPerEm",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_pixelsPerEm,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textHeight");
  members.insert({
    "textHeight",
      _Magick_TypeMetric_templ::InstanceMethod("textHeight",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_textHeight,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textWidth");
  members.insert({
    "textWidth",
      _Magick_TypeMetric_templ::InstanceMethod("textWidth",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_textWidth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("underlinePosition");
  members.insert({
    "underlinePosition",
      _Magick_TypeMetric_templ::InstanceMethod("underlinePosition",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_underlinePosition,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("underlineThickness");
  members.insert({
    "underlineThickness",
      _Magick_TypeMetric_templ::InstanceMethod("underlineThickness",
        &_Magick_TypeMetric_templ::_wrap_Magick_TypeMetric_underlineThickness,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_equal__SWIG_8(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_notEqual__SWIG_8(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gt__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lt__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_gte__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_lte__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Image_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Image_templ(const Napi::CallbackInfo &);
_Magick_Image_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_8(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_9(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Image__SWIG_10(const Napi::CallbackInfo &);
virtual ~_Magick_Image_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adjoinAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adjoin__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adjoinAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adjoinAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adjoin__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adjoin(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alphaAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alpha__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alphaAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alpha__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_matteColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_matteColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_matteColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_matteColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_matteColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_matteColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationDelayAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationDelay__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationDelayAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_animationDelayAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationDelay__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_animationDelay(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationIterationsAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationIterations__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationIterationsAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_animationIterationsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_animationIterations__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_animationIterations(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_backgroundColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_backgroundColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundTextureAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundTexture__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundTextureAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_backgroundTextureAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_backgroundTexture__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_backgroundTexture(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_baseColumnsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_baseColumns(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_baseFilenameAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_baseFilename(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_baseRowsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_baseRows(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackPointCompensationAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackPointCompensation__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackPointCompensationAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blackPointCompensationAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackPointCompensation__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blackPointCompensation(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_borderColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_borderColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_borderColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_borderColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_borderColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_borderColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_boundingBoxAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_boundingBox(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_boxColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_boxColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_boxColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_boxColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_boxColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_boxColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channelDepthAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channelDepth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channelDepthAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_channelDepthAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channelDepth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_channelDepth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_classTypeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_classType__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_classTypeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_classTypeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_classType__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_classType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorFuzzAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorFuzz__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorFuzzAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorFuzzAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorFuzz__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorFuzz(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMapSizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMapSize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMapSizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorMapSizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMapSize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorMapSize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpaceAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpace__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpaceAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorSpaceAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpace__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorSpace(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpaceType__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorSpaceTypeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorSpaceType__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorSpaceType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_columnsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_columns(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_commentAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_comment__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_commentAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_commentAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_comment__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_comment(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compose__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_composeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compose__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compose(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compressTypeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compressType__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compressTypeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compressTypeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compressType__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compressType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_debugAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_debug__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_debugAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_debugAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_debug__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_debug(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_densityAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_density__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_densityAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_densityAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_density__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_density(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_depthAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_depth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_depthAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_depthAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_depth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_depth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_directoryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_directory(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_endianAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_endian__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_endianAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_endianAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_endian__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_endian(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_exifProfileAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_exifProfile__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_exifProfileAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_exifProfileAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_exifProfile__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_exifProfile(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fileNameAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fileName__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fileNameAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fileNameAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fileName__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fileName(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fileSizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fileSize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fillColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fillColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillRuleAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillRule__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillRuleAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fillRuleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillRule__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fillRule(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillPatternAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillPattern__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillPatternAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fillPatternAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fillPattern__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fillPattern(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_filterTypeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_filterType__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_filterTypeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_filterTypeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_filterType__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_filterType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_font__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_font__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_font(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontFamilyAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontFamily__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontFamilyAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontFamilyAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontFamily__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontFamily(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontPointsizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontPointsize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontPointsizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontPointsizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontPointsize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontPointsize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontStyleAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontStyle__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontStyleAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontStyleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontStyle__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontStyle(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontWeightAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontWeight__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontWeightAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontWeightAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontWeight__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fontWeight(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_formatAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_format(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_formatExpressionAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_formatExpression(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gammaAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gamma__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_geometryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_geometry(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gifDisposeMethod__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_gifDisposeMethodAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gifDisposeMethod__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_gifDisposeMethod(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_hasChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_hasChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_highlightColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_highlightColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iccColorProfileAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iccColorProfile__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iccColorProfileAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_iccColorProfileAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iccColorProfile__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_iccColorProfile(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interlaceTypeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interlaceType__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interlaceTypeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_interlaceTypeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interlaceType__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_interlaceType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interpolateAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interpolate__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interpolateAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_interpolateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_interpolate__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_interpolate(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iptcProfileAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iptcProfile__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iptcProfileAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_iptcProfileAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_iptcProfile__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_iptcProfile(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_isOpaqueAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_isOpaque(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_isValidAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_isValid__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_isValidAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_isValidAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_isValid__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_isValid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_labelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_label__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_labelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_labelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_label__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_label(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_lowlightColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_lowlightColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_magickAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_magick__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_magickAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_magickAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_magick__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_magick(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_masklightColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_masklightColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_meanErrorPerPixelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_meanErrorPerPixel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modulusDepthAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modulusDepth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modulusDepthAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_modulusDepthAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modulusDepth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_modulusDepth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_monochromeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_monochrome__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_monochromeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_monochromeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_monochrome__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_monochrome(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_montageGeometryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_montageGeometry(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_normalizedMaxErrorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_normalizedMaxError(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_normalizedMeanErrorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_normalizedMeanError(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orientationAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orientation__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orientationAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_orientationAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orientation__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_orientation(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pageAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_page__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pageAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_pageAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_page__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_page(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_qualityAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quality__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_qualityAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_qualityAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quality__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quality(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColorsAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColors__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColorsAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeColorsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColors__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeColors(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColorSpace__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeColorSpaceAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeColorSpace__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeColorSpace(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDitherAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDither__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDitherAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeDitherAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDither__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeDither(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDitherMethod__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeDitherMethodAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeDitherMethod__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeDitherMethod(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeTreeDepth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeTreeDepthAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeTreeDepth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeTreeDepth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quietAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quiet__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quietAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quietAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quiet__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quiet(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_renderingIntentAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_renderingIntent__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_renderingIntentAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_renderingIntentAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_renderingIntent__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_renderingIntent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resolutionUnitsAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resolutionUnits__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resolutionUnitsAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_resolutionUnitsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resolutionUnits__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_resolutionUnits(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rowsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rows(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_samplingFactorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_samplingFactor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_samplingFactorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_samplingFactorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_samplingFactor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_samplingFactor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sceneAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_scene__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sceneAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sceneAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_scene__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_scene(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_size__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_size__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_size(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeAntiAlias__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeAntiAliasAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeAntiAlias__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeAntiAlias(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashArrayAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashArray__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashArrayAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeDashArrayAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashArray__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeDashArray(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashOffset__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeDashOffsetAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeDashOffset__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeDashOffset(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineCapAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineCap__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineCapAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeLineCapAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineCap__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeLineCap(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineJoinAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineJoin__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineJoinAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeLineJoinAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeLineJoin__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeLineJoin(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeMiterLimit__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeMiterLimitAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeMiterLimit__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeMiterLimit(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokePatternAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokePattern__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokePatternAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokePatternAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokePattern__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokePattern(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeWidthAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeWidth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeWidthAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeWidthAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strokeWidth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_strokeWidth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImageAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImageAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_subImageAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_subImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subRangeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subRange__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subRangeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_subRangeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subRange__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_subRange(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textAntiAliasAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textAntiAlias__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textAntiAliasAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textAntiAliasAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textAntiAlias__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textAntiAlias(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textDirectionAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textDirection__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textDirectionAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textDirectionAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textDirection__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textDirection(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textEncodingAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textEncoding__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textEncodingAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textEncodingAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textEncoding__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textEncoding(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textGravityAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textGravity__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textGravityAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textGravityAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textGravity__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textGravity(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterlineSpacing__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textInterlineSpacingAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterlineSpacing__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textInterlineSpacing(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterwordSpacing__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textInterwordSpacingAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textInterwordSpacing__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textInterwordSpacing(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textKerningAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textKerning__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textKerningAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textKerningAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textKerning__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textKerning(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textUnderColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textUnderColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textUnderColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textUnderColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textUnderColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_textUnderColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_totalColorsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_totalColors(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformRotationAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformRotation(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformSkewXAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformSkewX(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformSkewYAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformSkewY(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_typeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_type__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_typeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_typeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_type__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_type(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_verboseAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_verbose__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_verboseAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_verboseAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_verbose__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_verbose(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_virtualPixelMethod__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_virtualPixelMethodAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_virtualPixelMethod__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_virtualPixelMethod(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_x11DisplayAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_x11Display__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_x11DisplayAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_x11DisplayAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_x11Display__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_x11Display(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_xResolutionAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_xResolution(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_yResolutionAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_yResolution(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveBlurAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveBlur__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveBlurAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveBlur__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveBlurAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveBlurAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveBlur__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveBlur(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveResizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveResize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpen__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpen__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveSharpenAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpen__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveSharpen(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveSharpenChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveThreshold__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveThresholdAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_adaptiveThreshold__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_adaptiveThreshold(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoiseAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoise__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoiseAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_addNoiseAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoise__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_addNoise(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoiseChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoiseChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoiseChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_addNoiseChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_addNoiseChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_addNoiseChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_affineTransformAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_affineTransform(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alphaAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_alphaAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alpha__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_alpha(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alphaChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_alphaChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotateAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotate__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotateAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotate__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotateAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotate__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotateAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_annotateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_annotate__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_annotate(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_artifactAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_artifact__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_artifactAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_artifactAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_artifact__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_artifact(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_attributeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_attribute__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_attributeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_attribute__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_attributeAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_attributeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_attribute__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_attribute(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoGammaAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoGamma(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoGammaChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoGammaChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoLevelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoLevel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoLevelChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoLevelChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoOrientAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoOrient(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoThresholdAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_autoThreshold(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackThresholdAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackThreshold(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackThresholdChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blackThresholdChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blueShiftAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blueShift__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blueShiftAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blueShiftAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blueShift__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blueShift(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blur__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blur__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blurAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blur__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blur(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurChannelAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blurChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_blurChannel__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_blurChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_borderAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_border__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_borderAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_borderAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_border__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_border(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrast__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrast__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_brightnessContrastAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrast__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_brightnessContrast(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_brightnessContrastChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_brightnessContrastChannel__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_brightnessContrastChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdgeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdge__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdgeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdge__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdgeAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdge__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdgeAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdge__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdgeAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_cannyEdgeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cannyEdge__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_cannyEdge(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cdlAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cdl(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_channel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoal__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoal__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_charcoalAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoal__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_charcoal(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalChannelAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_charcoalChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_charcoalChannel__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_charcoalChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chopAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chop(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaBluePrimary__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaBluePrimaryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaBluePrimary__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaBluePrimary(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaGreenPrimary__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaGreenPrimaryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaGreenPrimary__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaGreenPrimary(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaRedPrimary__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaRedPrimaryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaRedPrimary__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaRedPrimary(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaWhitePointAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaWhitePoint__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaWhitePointAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaWhitePointAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_chromaWhitePoint__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_chromaWhitePoint(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clampAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clamp(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clampChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clampChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clipAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clip(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clipPathAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clipPath(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clutAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clut(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clutChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_clutChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMapAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMap__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMapAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorMapAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMap__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_colorMap(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMatrixAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_colorMatrix(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compareAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compare__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compareAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compare__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compareChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compareChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compareAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compareAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compare__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compare(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compareChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compareChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compareChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compareChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compositeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composite__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compositeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composite__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compositeAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composite__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compositeAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composite__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compositeAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composite__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_compositeAsync__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_compositeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_composite__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_composite(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_connectedComponentsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_connectedComponents(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_contrastAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_contrast(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_contrastStretchAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_contrastStretch(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_contrastStretchChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_contrastStretchChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_convolveAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_convolve(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_copyPixelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_copyPixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cropAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_crop(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cycleColormapAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_cycleColormap(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_decipherAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_decipher(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineSetAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineSet__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineSetAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_defineSetAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineSet__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_defineSet(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineValueAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineValue__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineValueAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_defineValueAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_defineValue__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_defineValue(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_deskewAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_deskew(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_despeckleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_despeckle(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_displayAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_display(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_distortAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_distort__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_distortAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_distortAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_distort__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_distort(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_drawAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_draw__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_drawAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_drawAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_draw__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_draw(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_edgeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_edge__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_edgeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_edgeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_edge__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_edge(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_embossAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_emboss__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_embossAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_emboss__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_embossAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_embossAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_emboss__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_emboss(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_encipherAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_encipher(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_enhanceAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_enhance(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_equalizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_equalize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_eraseAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_erase(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_evaluateAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_evaluate__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_evaluateAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_evaluate__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_evaluateAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_evaluateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_evaluate__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_evaluate(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extentAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extent__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extentAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extent__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extentAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extent__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extentAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_extentAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_extent__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_extent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_flipAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_flip(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlphaAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlpha__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlphaAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlpha__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlphaAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlpha__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlphaAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_floodFillAlphaAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillAlpha__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_floodFillAlpha(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColorAsync__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_floodFillColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillColor__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_floodFillColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTextureAsync__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_floodFillTextureAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_floodFillTexture__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_floodFillTexture(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_flopAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_flop(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontTypeMetricsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontTypeMetrics(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontTypeMetricsMultilineAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fontTypeMetricsMultiline(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frameAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frame__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frameAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frame__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frameAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frame__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frameAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frame__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frameAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_frameAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_frame__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_frame(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fxAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fx__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fxAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fxAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_fx__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_fx(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gammaAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gamma__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gammaAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_gammaAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gamma__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_gamma(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gaussianBlurAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gaussianBlur(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gaussianBlurChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_gaussianBlurChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getConstPixelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getConstPixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getConstMetacontentAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getConstMetacontent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getMetacontentAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getMetacontent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getPixelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_getPixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_grayscaleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_grayscale(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_haldClutAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_haldClut(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_houghLineAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_houghLine__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_houghLineAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_houghLineAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_houghLine__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_houghLine(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_identifyTypeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_identifyType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_implodeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_implode(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_inverseFourierTransform__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_inverseFourierTransformAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_inverseFourierTransform__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_inverseFourierTransform(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwahara__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwahara__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_kuwaharaAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwahara__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_kuwahara(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_kuwaharaChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_kuwaharaChannel__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_kuwaharaChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_level__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_level__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_level(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColorsAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColors__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColorsAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelColorsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColors__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelColors(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColorsChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColorsChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColorsChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelColorsChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelColorsChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelColorsChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelizeChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelizeChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelizeChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelizeChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_levelizeChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_levelizeChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_linearStretchAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_linearStretch(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_liquidRescaleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_liquidRescale(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_localContrastAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_localContrast(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_localContrastChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_localContrastChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_magnifyAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_magnify(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_mapAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_map__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_mapAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_mapAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_map__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_map(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_meanShiftAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_meanShift(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_medianFilterAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_medianFilter__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_medianFilterAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_medianFilterAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_medianFilter__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_medianFilter(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_minifyAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_minify(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modulateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modulate(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_momentsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_moments(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphology__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphology__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphology__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_morphologyAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphology__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_morphology(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannelAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannel__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannelAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_morphologyChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_morphologyChannel__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_morphologyChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_motionBlurAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_motionBlur(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negateAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negate__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negateAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_negateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negate__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_negate(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negateChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negateChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negateChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_negateChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_negateChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_negateChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_normalizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_normalize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_oilPaintAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_oilPaint__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_oilPaintAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_oilPaint__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_oilPaintAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_oilPaintAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_oilPaint__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_oilPaint(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_opaqueAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_opaque__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_opaqueAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_opaqueAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_opaque__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_opaque(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orderedDitherAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orderedDither(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orderedDitherChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_orderedDitherChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_perceptibleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_perceptible(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_perceptibleChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_perceptibleChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_perceptualHashAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_perceptualHash(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pingAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_ping__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pingAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_pingAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_ping__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_ping(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pixelColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pixelColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pixelColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_pixelColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_pixelColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_pixelColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_polaroidAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_polaroid(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_posterizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_posterize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_posterizeChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_posterizeChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_processAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_process(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_profileAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_profile__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_profileAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_profileAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_profile__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_profile(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_quantize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_raiseAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_raise__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_raiseAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_raise__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_raiseAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_raiseAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_raise__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_raise(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_randomThresholdAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_randomThreshold(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_randomThresholdChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_randomThresholdChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readAsync__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_readAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_read__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_read(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readMaskAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readMask__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readMaskAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_readMaskAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readMask__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_readMask(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readPixelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_readPixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_reduceNoiseAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_reduceNoise__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_reduceNoiseAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_reduceNoiseAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_reduceNoise__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_reduceNoise(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_repageAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_repage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resampleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resample(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_resize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rollAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_roll__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rollAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_rollAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_roll__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_roll(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rotateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rotate(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rotationalBlurAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rotationalBlur(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rotationalBlurChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_rotationalBlurChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sampleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sample(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_scaleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_scale(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_segmentAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_segment__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_segmentAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_segment__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_segmentAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_segmentAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_segment__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_segment(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_selectiveBlurAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_selectiveBlur(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_selectiveBlurChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_selectiveBlurChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_separateAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_separate(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sepiaToneAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sepiaTone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_setColorMetricAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_setColorMetric(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_setPixelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_setPixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shade__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shade__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadeAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shade__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadeAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_shadeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shade__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_shade(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadowAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadow__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadowAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadow__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadowAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadow__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadowAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadow__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadowAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_shadowAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shadow__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_shadow(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpen__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpen__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sharpenAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpen__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sharpen(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenChannelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenChannel__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenChannelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenChannel__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenChannelAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sharpenChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sharpenChannel__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sharpenChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shaveAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shave(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shearAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_shear(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sigmoidalContrast__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sigmoidalContrastAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sigmoidalContrast__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sigmoidalContrast(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_signatureAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_signature__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_signatureAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_signatureAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_signature__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_signature(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketchAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketch__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketchAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketch__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketchAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketch__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketchAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sketchAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sketch__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_sketch(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_solarizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_solarize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_solarizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_solarizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_solarize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_solarize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sparseColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_sparseColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_spliceAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_splice__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_spliceAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_splice__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_spliceAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_spliceAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_splice__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_splice(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_spreadAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_spread__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_spreadAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_spreadAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_spread__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_spread(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_statisticsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_statistics(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_steganoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_stegano(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_stereoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_stereo(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_stripAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_strip(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImageSearchAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImageSearch__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImageSearchAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_subImageSearchAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_subImageSearch__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_subImageSearch(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_swirlAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_swirl(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_syncPixelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_syncPixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_textureAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_texture(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_thresholdAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_threshold(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_thumbnailAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_thumbnail(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_tintAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_tint(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformOriginAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformOrigin(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformResetAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformReset(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformScaleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transformScale(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transparentAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transparent__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transparentAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_transparentAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transparent__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_transparent(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transparentChromaAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transparentChroma(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transposeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transpose(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transverseAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_transverse(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_trimAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_trim(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_uniqueColorsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_uniqueColors(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_unsharpmaskAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_unsharpmask(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_unsharpmaskChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_unsharpmaskChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignetteAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignette__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignetteAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignette__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignetteAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignette__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignetteAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignette__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignetteAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_vignetteAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_vignette__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_vignette(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_waveAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_wave__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_waveAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_wave__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_waveAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_waveAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_wave__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_wave(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_waveletDenoiseAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_waveletDenoise(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_whiteThresholdAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_whiteThreshold(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_whiteThresholdChannelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_whiteThresholdChannel(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_write__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_write__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_write__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_write__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeAsync__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_writeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_write__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_write(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeMaskAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeMask__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeMaskAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_writeMaskAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writeMask__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Image__wrap_Magick_Image_writeMask(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writePixelsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_writePixels(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_zoomAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_zoom(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_imageAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_image(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constImageAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_imageInfoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_imageInfo(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constImageInfoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constImageInfo(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_optionsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_options(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constOptionsAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constOptions(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeInfoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_quantizeInfo(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constQuantizeInfoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_constQuantizeInfo(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modifyImageAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_modifyImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_replaceImageAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Image_replaceImage(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Image_inst : public _Magick_Image_templ<_Magick_Image_inst> {
public:
  using _Magick_Image_templ::_Magick_Image_templ;
  virtual ~_Magick_Image_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Image_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Image_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Image (_Magick_Image) */
// jsnapi_getclass
Napi::Function _Magick_Image_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Image_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Image_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Image_inst>::DefineClass(env, "Image", symbolTable);
}

void _Magick_Image_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Image_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Image_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_Image_templ::InstanceMethod("clone",
        &_Magick_Image_templ::_wrap_Magick_Image_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adjoinAsync");
  members.insert({
    "adjoinAsync",
      _Magick_Image_templ::InstanceMethod("adjoinAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adjoinAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adjoin");
  members.insert({
    "adjoin",
      _Magick_Image_templ::InstanceMethod("adjoin",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adjoin,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("matteColorAsync");
  members.insert({
    "matteColorAsync",
      _Magick_Image_templ::InstanceMethod("matteColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_matteColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("matteColor");
  members.insert({
    "matteColor",
      _Magick_Image_templ::InstanceMethod("matteColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_matteColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("animationDelayAsync");
  members.insert({
    "animationDelayAsync",
      _Magick_Image_templ::InstanceMethod("animationDelayAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_animationDelayAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("animationDelay");
  members.insert({
    "animationDelay",
      _Magick_Image_templ::InstanceMethod("animationDelay",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_animationDelay,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("animationIterationsAsync");
  members.insert({
    "animationIterationsAsync",
      _Magick_Image_templ::InstanceMethod("animationIterationsAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_animationIterationsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("animationIterations");
  members.insert({
    "animationIterations",
      _Magick_Image_templ::InstanceMethod("animationIterations",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_animationIterations,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("backgroundColorAsync");
  members.insert({
    "backgroundColorAsync",
      _Magick_Image_templ::InstanceMethod("backgroundColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_backgroundColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("backgroundColor");
  members.insert({
    "backgroundColor",
      _Magick_Image_templ::InstanceMethod("backgroundColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_backgroundColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("backgroundTextureAsync");
  members.insert({
    "backgroundTextureAsync",
      _Magick_Image_templ::InstanceMethod("backgroundTextureAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_backgroundTextureAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("backgroundTexture");
  members.insert({
    "backgroundTexture",
      _Magick_Image_templ::InstanceMethod("backgroundTexture",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_backgroundTexture,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("baseColumnsAsync");
  members.insert({
    "baseColumnsAsync",
      _Magick_Image_templ::InstanceMethod("baseColumnsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_baseColumnsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("baseColumns");
  members.insert({
    "baseColumns",
      _Magick_Image_templ::InstanceMethod("baseColumns",
        &_Magick_Image_templ::_wrap_Magick_Image_baseColumns,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("baseFilenameAsync");
  members.insert({
    "baseFilenameAsync",
      _Magick_Image_templ::InstanceMethod("baseFilenameAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_baseFilenameAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("baseFilename");
  members.insert({
    "baseFilename",
      _Magick_Image_templ::InstanceMethod("baseFilename",
        &_Magick_Image_templ::_wrap_Magick_Image_baseFilename,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("baseRowsAsync");
  members.insert({
    "baseRowsAsync",
      _Magick_Image_templ::InstanceMethod("baseRowsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_baseRowsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("baseRows");
  members.insert({
    "baseRows",
      _Magick_Image_templ::InstanceMethod("baseRows",
        &_Magick_Image_templ::_wrap_Magick_Image_baseRows,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blackPointCompensationAsync");
  members.insert({
    "blackPointCompensationAsync",
      _Magick_Image_templ::InstanceMethod("blackPointCompensationAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blackPointCompensationAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blackPointCompensation");
  members.insert({
    "blackPointCompensation",
      _Magick_Image_templ::InstanceMethod("blackPointCompensation",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blackPointCompensation,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("borderColorAsync");
  members.insert({
    "borderColorAsync",
      _Magick_Image_templ::InstanceMethod("borderColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_borderColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("borderColor");
  members.insert({
    "borderColor",
      _Magick_Image_templ::InstanceMethod("borderColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_borderColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("boundingBoxAsync");
  members.insert({
    "boundingBoxAsync",
      _Magick_Image_templ::InstanceMethod("boundingBoxAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_boundingBoxAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("boundingBox");
  members.insert({
    "boundingBox",
      _Magick_Image_templ::InstanceMethod("boundingBox",
        &_Magick_Image_templ::_wrap_Magick_Image_boundingBox,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("boxColorAsync");
  members.insert({
    "boxColorAsync",
      _Magick_Image_templ::InstanceMethod("boxColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_boxColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("boxColor");
  members.insert({
    "boxColor",
      _Magick_Image_templ::InstanceMethod("boxColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_boxColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channelDepthAsync");
  members.insert({
    "channelDepthAsync",
      _Magick_Image_templ::InstanceMethod("channelDepthAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_channelDepthAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channelDepth");
  members.insert({
    "channelDepth",
      _Magick_Image_templ::InstanceMethod("channelDepth",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_channelDepth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channelsAsync");
  members.insert({
    "channelsAsync",
      _Magick_Image_templ::InstanceMethod("channelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_channelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channels");
  members.insert({
    "channels",
      _Magick_Image_templ::InstanceMethod("channels",
        &_Magick_Image_templ::_wrap_Magick_Image_channels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("classTypeAsync");
  members.insert({
    "classTypeAsync",
      _Magick_Image_templ::InstanceMethod("classTypeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_classTypeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("classType");
  members.insert({
    "classType",
      _Magick_Image_templ::InstanceMethod("classType",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_classType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorFuzzAsync");
  members.insert({
    "colorFuzzAsync",
      _Magick_Image_templ::InstanceMethod("colorFuzzAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorFuzzAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorFuzz");
  members.insert({
    "colorFuzz",
      _Magick_Image_templ::InstanceMethod("colorFuzz",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorFuzz,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorMapSizeAsync");
  members.insert({
    "colorMapSizeAsync",
      _Magick_Image_templ::InstanceMethod("colorMapSizeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorMapSizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorMapSize");
  members.insert({
    "colorMapSize",
      _Magick_Image_templ::InstanceMethod("colorMapSize",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorMapSize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorSpaceAsync");
  members.insert({
    "colorSpaceAsync",
      _Magick_Image_templ::InstanceMethod("colorSpaceAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorSpaceAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorSpace");
  members.insert({
    "colorSpace",
      _Magick_Image_templ::InstanceMethod("colorSpace",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorSpace,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorSpaceTypeAsync");
  members.insert({
    "colorSpaceTypeAsync",
      _Magick_Image_templ::InstanceMethod("colorSpaceTypeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorSpaceTypeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorSpaceType");
  members.insert({
    "colorSpaceType",
      _Magick_Image_templ::InstanceMethod("colorSpaceType",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorSpaceType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("columnsAsync");
  members.insert({
    "columnsAsync",
      _Magick_Image_templ::InstanceMethod("columnsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_columnsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("columns");
  members.insert({
    "columns",
      _Magick_Image_templ::InstanceMethod("columns",
        &_Magick_Image_templ::_wrap_Magick_Image_columns,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("commentAsync");
  members.insert({
    "commentAsync",
      _Magick_Image_templ::InstanceMethod("commentAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_commentAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("comment");
  members.insert({
    "comment",
      _Magick_Image_templ::InstanceMethod("comment",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_comment,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("composeAsync");
  members.insert({
    "composeAsync",
      _Magick_Image_templ::InstanceMethod("composeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_composeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compose");
  members.insert({
    "compose",
      _Magick_Image_templ::InstanceMethod("compose",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compose,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compressTypeAsync");
  members.insert({
    "compressTypeAsync",
      _Magick_Image_templ::InstanceMethod("compressTypeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compressTypeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compressType");
  members.insert({
    "compressType",
      _Magick_Image_templ::InstanceMethod("compressType",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compressType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("debugAsync");
  members.insert({
    "debugAsync",
      _Magick_Image_templ::InstanceMethod("debugAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_debugAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("debug");
  members.insert({
    "debug",
      _Magick_Image_templ::InstanceMethod("debug",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_debug,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("densityAsync");
  members.insert({
    "densityAsync",
      _Magick_Image_templ::InstanceMethod("densityAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_densityAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("density");
  members.insert({
    "density",
      _Magick_Image_templ::InstanceMethod("density",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_density,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("depthAsync");
  members.insert({
    "depthAsync",
      _Magick_Image_templ::InstanceMethod("depthAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_depthAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("depth");
  members.insert({
    "depth",
      _Magick_Image_templ::InstanceMethod("depth",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_depth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("directoryAsync");
  members.insert({
    "directoryAsync",
      _Magick_Image_templ::InstanceMethod("directoryAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_directoryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("directory");
  members.insert({
    "directory",
      _Magick_Image_templ::InstanceMethod("directory",
        &_Magick_Image_templ::_wrap_Magick_Image_directory,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("endianAsync");
  members.insert({
    "endianAsync",
      _Magick_Image_templ::InstanceMethod("endianAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_endianAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("endian");
  members.insert({
    "endian",
      _Magick_Image_templ::InstanceMethod("endian",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_endian,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("exifProfileAsync");
  members.insert({
    "exifProfileAsync",
      _Magick_Image_templ::InstanceMethod("exifProfileAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_exifProfileAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("exifProfile");
  members.insert({
    "exifProfile",
      _Magick_Image_templ::InstanceMethod("exifProfile",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_exifProfile,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileNameAsync");
  members.insert({
    "fileNameAsync",
      _Magick_Image_templ::InstanceMethod("fileNameAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fileNameAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileName");
  members.insert({
    "fileName",
      _Magick_Image_templ::InstanceMethod("fileName",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fileName,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileSizeAsync");
  members.insert({
    "fileSizeAsync",
      _Magick_Image_templ::InstanceMethod("fileSizeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_fileSizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileSize");
  members.insert({
    "fileSize",
      _Magick_Image_templ::InstanceMethod("fileSize",
        &_Magick_Image_templ::_wrap_Magick_Image_fileSize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillColorAsync");
  members.insert({
    "fillColorAsync",
      _Magick_Image_templ::InstanceMethod("fillColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fillColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillColor");
  members.insert({
    "fillColor",
      _Magick_Image_templ::InstanceMethod("fillColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fillColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillRuleAsync");
  members.insert({
    "fillRuleAsync",
      _Magick_Image_templ::InstanceMethod("fillRuleAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fillRuleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillRule");
  members.insert({
    "fillRule",
      _Magick_Image_templ::InstanceMethod("fillRule",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fillRule,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillPatternAsync");
  members.insert({
    "fillPatternAsync",
      _Magick_Image_templ::InstanceMethod("fillPatternAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fillPatternAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillPattern");
  members.insert({
    "fillPattern",
      _Magick_Image_templ::InstanceMethod("fillPattern",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fillPattern,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("filterTypeAsync");
  members.insert({
    "filterTypeAsync",
      _Magick_Image_templ::InstanceMethod("filterTypeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_filterTypeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("filterType");
  members.insert({
    "filterType",
      _Magick_Image_templ::InstanceMethod("filterType",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_filterType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontAsync");
  members.insert({
    "fontAsync",
      _Magick_Image_templ::InstanceMethod("fontAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("font");
  members.insert({
    "font",
      _Magick_Image_templ::InstanceMethod("font",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_font,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontFamilyAsync");
  members.insert({
    "fontFamilyAsync",
      _Magick_Image_templ::InstanceMethod("fontFamilyAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontFamilyAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontFamily");
  members.insert({
    "fontFamily",
      _Magick_Image_templ::InstanceMethod("fontFamily",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontFamily,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontPointsizeAsync");
  members.insert({
    "fontPointsizeAsync",
      _Magick_Image_templ::InstanceMethod("fontPointsizeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontPointsizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontPointsize");
  members.insert({
    "fontPointsize",
      _Magick_Image_templ::InstanceMethod("fontPointsize",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontPointsize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontStyleAsync");
  members.insert({
    "fontStyleAsync",
      _Magick_Image_templ::InstanceMethod("fontStyleAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontStyleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontStyle");
  members.insert({
    "fontStyle",
      _Magick_Image_templ::InstanceMethod("fontStyle",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontStyle,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontWeightAsync");
  members.insert({
    "fontWeightAsync",
      _Magick_Image_templ::InstanceMethod("fontWeightAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontWeightAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontWeight");
  members.insert({
    "fontWeight",
      _Magick_Image_templ::InstanceMethod("fontWeight",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fontWeight,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("formatAsync");
  members.insert({
    "formatAsync",
      _Magick_Image_templ::InstanceMethod("formatAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_formatAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("format");
  members.insert({
    "format",
      _Magick_Image_templ::InstanceMethod("format",
        &_Magick_Image_templ::_wrap_Magick_Image_format,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("formatExpressionAsync");
  members.insert({
    "formatExpressionAsync",
      _Magick_Image_templ::InstanceMethod("formatExpressionAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_formatExpressionAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("formatExpression");
  members.insert({
    "formatExpression",
      _Magick_Image_templ::InstanceMethod("formatExpression",
        &_Magick_Image_templ::_wrap_Magick_Image_formatExpression,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("geometryAsync");
  members.insert({
    "geometryAsync",
      _Magick_Image_templ::InstanceMethod("geometryAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_geometryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("geometry");
  members.insert({
    "geometry",
      _Magick_Image_templ::InstanceMethod("geometry",
        &_Magick_Image_templ::_wrap_Magick_Image_geometry,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gifDisposeMethodAsync");
  members.insert({
    "gifDisposeMethodAsync",
      _Magick_Image_templ::InstanceMethod("gifDisposeMethodAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_gifDisposeMethodAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gifDisposeMethod");
  members.insert({
    "gifDisposeMethod",
      _Magick_Image_templ::InstanceMethod("gifDisposeMethod",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_gifDisposeMethod,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("hasChannelAsync");
  members.insert({
    "hasChannelAsync",
      _Magick_Image_templ::InstanceMethod("hasChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_hasChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("hasChannel");
  members.insert({
    "hasChannel",
      _Magick_Image_templ::InstanceMethod("hasChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_hasChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("highlightColorAsync");
  members.insert({
    "highlightColorAsync",
      _Magick_Image_templ::InstanceMethod("highlightColorAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_highlightColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("highlightColor");
  members.insert({
    "highlightColor",
      _Magick_Image_templ::InstanceMethod("highlightColor",
        &_Magick_Image_templ::_wrap_Magick_Image_highlightColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("iccColorProfileAsync");
  members.insert({
    "iccColorProfileAsync",
      _Magick_Image_templ::InstanceMethod("iccColorProfileAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_iccColorProfileAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("iccColorProfile");
  members.insert({
    "iccColorProfile",
      _Magick_Image_templ::InstanceMethod("iccColorProfile",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_iccColorProfile,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("interlaceTypeAsync");
  members.insert({
    "interlaceTypeAsync",
      _Magick_Image_templ::InstanceMethod("interlaceTypeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_interlaceTypeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("interlaceType");
  members.insert({
    "interlaceType",
      _Magick_Image_templ::InstanceMethod("interlaceType",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_interlaceType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("interpolateAsync");
  members.insert({
    "interpolateAsync",
      _Magick_Image_templ::InstanceMethod("interpolateAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_interpolateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("interpolate");
  members.insert({
    "interpolate",
      _Magick_Image_templ::InstanceMethod("interpolate",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_interpolate,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("iptcProfileAsync");
  members.insert({
    "iptcProfileAsync",
      _Magick_Image_templ::InstanceMethod("iptcProfileAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_iptcProfileAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("iptcProfile");
  members.insert({
    "iptcProfile",
      _Magick_Image_templ::InstanceMethod("iptcProfile",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_iptcProfile,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isOpaqueAsync");
  members.insert({
    "isOpaqueAsync",
      _Magick_Image_templ::InstanceMethod("isOpaqueAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_isOpaqueAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isOpaque");
  members.insert({
    "isOpaque",
      _Magick_Image_templ::InstanceMethod("isOpaque",
        &_Magick_Image_templ::_wrap_Magick_Image_isOpaque,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValidAsync");
  members.insert({
    "isValidAsync",
      _Magick_Image_templ::InstanceMethod("isValidAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_isValidAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isValid");
  members.insert({
    "isValid",
      _Magick_Image_templ::InstanceMethod("isValid",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_isValid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("labelAsync");
  members.insert({
    "labelAsync",
      _Magick_Image_templ::InstanceMethod("labelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_labelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("label");
  members.insert({
    "label",
      _Magick_Image_templ::InstanceMethod("label",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_label,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lowlightColorAsync");
  members.insert({
    "lowlightColorAsync",
      _Magick_Image_templ::InstanceMethod("lowlightColorAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_lowlightColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("lowlightColor");
  members.insert({
    "lowlightColor",
      _Magick_Image_templ::InstanceMethod("lowlightColor",
        &_Magick_Image_templ::_wrap_Magick_Image_lowlightColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("magickAsync");
  members.insert({
    "magickAsync",
      _Magick_Image_templ::InstanceMethod("magickAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_magickAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("magick");
  members.insert({
    "magick",
      _Magick_Image_templ::InstanceMethod("magick",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_magick,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("masklightColorAsync");
  members.insert({
    "masklightColorAsync",
      _Magick_Image_templ::InstanceMethod("masklightColorAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_masklightColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("masklightColor");
  members.insert({
    "masklightColor",
      _Magick_Image_templ::InstanceMethod("masklightColor",
        &_Magick_Image_templ::_wrap_Magick_Image_masklightColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("meanErrorPerPixelAsync");
  members.insert({
    "meanErrorPerPixelAsync",
      _Magick_Image_templ::InstanceMethod("meanErrorPerPixelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_meanErrorPerPixelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("meanErrorPerPixel");
  members.insert({
    "meanErrorPerPixel",
      _Magick_Image_templ::InstanceMethod("meanErrorPerPixel",
        &_Magick_Image_templ::_wrap_Magick_Image_meanErrorPerPixel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("modulusDepthAsync");
  members.insert({
    "modulusDepthAsync",
      _Magick_Image_templ::InstanceMethod("modulusDepthAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_modulusDepthAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("modulusDepth");
  members.insert({
    "modulusDepth",
      _Magick_Image_templ::InstanceMethod("modulusDepth",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_modulusDepth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("monochromeAsync");
  members.insert({
    "monochromeAsync",
      _Magick_Image_templ::InstanceMethod("monochromeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_monochromeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("monochrome");
  members.insert({
    "monochrome",
      _Magick_Image_templ::InstanceMethod("monochrome",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_monochrome,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("montageGeometryAsync");
  members.insert({
    "montageGeometryAsync",
      _Magick_Image_templ::InstanceMethod("montageGeometryAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_montageGeometryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("montageGeometry");
  members.insert({
    "montageGeometry",
      _Magick_Image_templ::InstanceMethod("montageGeometry",
        &_Magick_Image_templ::_wrap_Magick_Image_montageGeometry,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("normalizedMaxErrorAsync");
  members.insert({
    "normalizedMaxErrorAsync",
      _Magick_Image_templ::InstanceMethod("normalizedMaxErrorAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_normalizedMaxErrorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("normalizedMaxError");
  members.insert({
    "normalizedMaxError",
      _Magick_Image_templ::InstanceMethod("normalizedMaxError",
        &_Magick_Image_templ::_wrap_Magick_Image_normalizedMaxError,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("normalizedMeanErrorAsync");
  members.insert({
    "normalizedMeanErrorAsync",
      _Magick_Image_templ::InstanceMethod("normalizedMeanErrorAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_normalizedMeanErrorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("normalizedMeanError");
  members.insert({
    "normalizedMeanError",
      _Magick_Image_templ::InstanceMethod("normalizedMeanError",
        &_Magick_Image_templ::_wrap_Magick_Image_normalizedMeanError,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("orientationAsync");
  members.insert({
    "orientationAsync",
      _Magick_Image_templ::InstanceMethod("orientationAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_orientationAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("orientation");
  members.insert({
    "orientation",
      _Magick_Image_templ::InstanceMethod("orientation",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_orientation,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pageAsync");
  members.insert({
    "pageAsync",
      _Magick_Image_templ::InstanceMethod("pageAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_pageAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("page");
  members.insert({
    "page",
      _Magick_Image_templ::InstanceMethod("page",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_page,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("qualityAsync");
  members.insert({
    "qualityAsync",
      _Magick_Image_templ::InstanceMethod("qualityAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_qualityAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quality");
  members.insert({
    "quality",
      _Magick_Image_templ::InstanceMethod("quality",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quality,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeColorsAsync");
  members.insert({
    "quantizeColorsAsync",
      _Magick_Image_templ::InstanceMethod("quantizeColorsAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeColorsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeColors");
  members.insert({
    "quantizeColors",
      _Magick_Image_templ::InstanceMethod("quantizeColors",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeColors,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeColorSpaceAsync");
  members.insert({
    "quantizeColorSpaceAsync",
      _Magick_Image_templ::InstanceMethod("quantizeColorSpaceAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeColorSpaceAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeColorSpace");
  members.insert({
    "quantizeColorSpace",
      _Magick_Image_templ::InstanceMethod("quantizeColorSpace",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeColorSpace,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeDitherAsync");
  members.insert({
    "quantizeDitherAsync",
      _Magick_Image_templ::InstanceMethod("quantizeDitherAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeDitherAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeDither");
  members.insert({
    "quantizeDither",
      _Magick_Image_templ::InstanceMethod("quantizeDither",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeDither,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeDitherMethodAsync");
  members.insert({
    "quantizeDitherMethodAsync",
      _Magick_Image_templ::InstanceMethod("quantizeDitherMethodAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeDitherMethodAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeDitherMethod");
  members.insert({
    "quantizeDitherMethod",
      _Magick_Image_templ::InstanceMethod("quantizeDitherMethod",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeDitherMethod,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeTreeDepthAsync");
  members.insert({
    "quantizeTreeDepthAsync",
      _Magick_Image_templ::InstanceMethod("quantizeTreeDepthAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeTreeDepthAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeTreeDepth");
  members.insert({
    "quantizeTreeDepth",
      _Magick_Image_templ::InstanceMethod("quantizeTreeDepth",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeTreeDepth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quietAsync");
  members.insert({
    "quietAsync",
      _Magick_Image_templ::InstanceMethod("quietAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quietAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quiet");
  members.insert({
    "quiet",
      _Magick_Image_templ::InstanceMethod("quiet",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quiet,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("renderingIntentAsync");
  members.insert({
    "renderingIntentAsync",
      _Magick_Image_templ::InstanceMethod("renderingIntentAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_renderingIntentAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("renderingIntent");
  members.insert({
    "renderingIntent",
      _Magick_Image_templ::InstanceMethod("renderingIntent",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_renderingIntent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("resolutionUnitsAsync");
  members.insert({
    "resolutionUnitsAsync",
      _Magick_Image_templ::InstanceMethod("resolutionUnitsAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_resolutionUnitsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("resolutionUnits");
  members.insert({
    "resolutionUnits",
      _Magick_Image_templ::InstanceMethod("resolutionUnits",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_resolutionUnits,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rowsAsync");
  members.insert({
    "rowsAsync",
      _Magick_Image_templ::InstanceMethod("rowsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_rowsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rows");
  members.insert({
    "rows",
      _Magick_Image_templ::InstanceMethod("rows",
        &_Magick_Image_templ::_wrap_Magick_Image_rows,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("samplingFactorAsync");
  members.insert({
    "samplingFactorAsync",
      _Magick_Image_templ::InstanceMethod("samplingFactorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_samplingFactorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("samplingFactor");
  members.insert({
    "samplingFactor",
      _Magick_Image_templ::InstanceMethod("samplingFactor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_samplingFactor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sceneAsync");
  members.insert({
    "sceneAsync",
      _Magick_Image_templ::InstanceMethod("sceneAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sceneAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("scene");
  members.insert({
    "scene",
      _Magick_Image_templ::InstanceMethod("scene",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_scene,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sizeAsync");
  members.insert({
    "sizeAsync",
      _Magick_Image_templ::InstanceMethod("sizeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("size");
  members.insert({
    "size",
      _Magick_Image_templ::InstanceMethod("size",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_size,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeAntiAliasAsync");
  members.insert({
    "strokeAntiAliasAsync",
      _Magick_Image_templ::InstanceMethod("strokeAntiAliasAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeAntiAliasAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeAntiAlias");
  members.insert({
    "strokeAntiAlias",
      _Magick_Image_templ::InstanceMethod("strokeAntiAlias",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeAntiAlias,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeColorAsync");
  members.insert({
    "strokeColorAsync",
      _Magick_Image_templ::InstanceMethod("strokeColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeColor");
  members.insert({
    "strokeColor",
      _Magick_Image_templ::InstanceMethod("strokeColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeDashArrayAsync");
  members.insert({
    "strokeDashArrayAsync",
      _Magick_Image_templ::InstanceMethod("strokeDashArrayAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeDashArrayAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeDashArray");
  members.insert({
    "strokeDashArray",
      _Magick_Image_templ::InstanceMethod("strokeDashArray",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeDashArray,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeDashOffsetAsync");
  members.insert({
    "strokeDashOffsetAsync",
      _Magick_Image_templ::InstanceMethod("strokeDashOffsetAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeDashOffsetAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeDashOffset");
  members.insert({
    "strokeDashOffset",
      _Magick_Image_templ::InstanceMethod("strokeDashOffset",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeDashOffset,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeLineCapAsync");
  members.insert({
    "strokeLineCapAsync",
      _Magick_Image_templ::InstanceMethod("strokeLineCapAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeLineCapAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeLineCap");
  members.insert({
    "strokeLineCap",
      _Magick_Image_templ::InstanceMethod("strokeLineCap",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeLineCap,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeLineJoinAsync");
  members.insert({
    "strokeLineJoinAsync",
      _Magick_Image_templ::InstanceMethod("strokeLineJoinAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeLineJoinAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeLineJoin");
  members.insert({
    "strokeLineJoin",
      _Magick_Image_templ::InstanceMethod("strokeLineJoin",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeLineJoin,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeMiterLimitAsync");
  members.insert({
    "strokeMiterLimitAsync",
      _Magick_Image_templ::InstanceMethod("strokeMiterLimitAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeMiterLimitAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeMiterLimit");
  members.insert({
    "strokeMiterLimit",
      _Magick_Image_templ::InstanceMethod("strokeMiterLimit",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeMiterLimit,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokePatternAsync");
  members.insert({
    "strokePatternAsync",
      _Magick_Image_templ::InstanceMethod("strokePatternAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokePatternAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokePattern");
  members.insert({
    "strokePattern",
      _Magick_Image_templ::InstanceMethod("strokePattern",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokePattern,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeWidthAsync");
  members.insert({
    "strokeWidthAsync",
      _Magick_Image_templ::InstanceMethod("strokeWidthAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeWidthAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeWidth");
  members.insert({
    "strokeWidth",
      _Magick_Image_templ::InstanceMethod("strokeWidth",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_strokeWidth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("subImageAsync");
  members.insert({
    "subImageAsync",
      _Magick_Image_templ::InstanceMethod("subImageAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_subImageAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("subImage");
  members.insert({
    "subImage",
      _Magick_Image_templ::InstanceMethod("subImage",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_subImage,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("subRangeAsync");
  members.insert({
    "subRangeAsync",
      _Magick_Image_templ::InstanceMethod("subRangeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_subRangeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("subRange");
  members.insert({
    "subRange",
      _Magick_Image_templ::InstanceMethod("subRange",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_subRange,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textAntiAliasAsync");
  members.insert({
    "textAntiAliasAsync",
      _Magick_Image_templ::InstanceMethod("textAntiAliasAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textAntiAliasAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textAntiAlias");
  members.insert({
    "textAntiAlias",
      _Magick_Image_templ::InstanceMethod("textAntiAlias",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textAntiAlias,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textDirectionAsync");
  members.insert({
    "textDirectionAsync",
      _Magick_Image_templ::InstanceMethod("textDirectionAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textDirectionAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textDirection");
  members.insert({
    "textDirection",
      _Magick_Image_templ::InstanceMethod("textDirection",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textDirection,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textEncodingAsync");
  members.insert({
    "textEncodingAsync",
      _Magick_Image_templ::InstanceMethod("textEncodingAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textEncodingAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textEncoding");
  members.insert({
    "textEncoding",
      _Magick_Image_templ::InstanceMethod("textEncoding",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textEncoding,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textGravityAsync");
  members.insert({
    "textGravityAsync",
      _Magick_Image_templ::InstanceMethod("textGravityAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textGravityAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textGravity");
  members.insert({
    "textGravity",
      _Magick_Image_templ::InstanceMethod("textGravity",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textGravity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textInterlineSpacingAsync");
  members.insert({
    "textInterlineSpacingAsync",
      _Magick_Image_templ::InstanceMethod("textInterlineSpacingAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textInterlineSpacingAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textInterlineSpacing");
  members.insert({
    "textInterlineSpacing",
      _Magick_Image_templ::InstanceMethod("textInterlineSpacing",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textInterlineSpacing,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textInterwordSpacingAsync");
  members.insert({
    "textInterwordSpacingAsync",
      _Magick_Image_templ::InstanceMethod("textInterwordSpacingAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textInterwordSpacingAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textInterwordSpacing");
  members.insert({
    "textInterwordSpacing",
      _Magick_Image_templ::InstanceMethod("textInterwordSpacing",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textInterwordSpacing,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textKerningAsync");
  members.insert({
    "textKerningAsync",
      _Magick_Image_templ::InstanceMethod("textKerningAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textKerningAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textKerning");
  members.insert({
    "textKerning",
      _Magick_Image_templ::InstanceMethod("textKerning",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textKerning,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textUnderColorAsync");
  members.insert({
    "textUnderColorAsync",
      _Magick_Image_templ::InstanceMethod("textUnderColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textUnderColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textUnderColor");
  members.insert({
    "textUnderColor",
      _Magick_Image_templ::InstanceMethod("textUnderColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_textUnderColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("totalColorsAsync");
  members.insert({
    "totalColorsAsync",
      _Magick_Image_templ::InstanceMethod("totalColorsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_totalColorsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("totalColors");
  members.insert({
    "totalColors",
      _Magick_Image_templ::InstanceMethod("totalColors",
        &_Magick_Image_templ::_wrap_Magick_Image_totalColors,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformRotationAsync");
  members.insert({
    "transformRotationAsync",
      _Magick_Image_templ::InstanceMethod("transformRotationAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transformRotationAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformRotation");
  members.insert({
    "transformRotation",
      _Magick_Image_templ::InstanceMethod("transformRotation",
        &_Magick_Image_templ::_wrap_Magick_Image_transformRotation,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformSkewXAsync");
  members.insert({
    "transformSkewXAsync",
      _Magick_Image_templ::InstanceMethod("transformSkewXAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transformSkewXAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformSkewX");
  members.insert({
    "transformSkewX",
      _Magick_Image_templ::InstanceMethod("transformSkewX",
        &_Magick_Image_templ::_wrap_Magick_Image_transformSkewX,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformSkewYAsync");
  members.insert({
    "transformSkewYAsync",
      _Magick_Image_templ::InstanceMethod("transformSkewYAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transformSkewYAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformSkewY");
  members.insert({
    "transformSkewY",
      _Magick_Image_templ::InstanceMethod("transformSkewY",
        &_Magick_Image_templ::_wrap_Magick_Image_transformSkewY,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("typeAsync");
  members.insert({
    "typeAsync",
      _Magick_Image_templ::InstanceMethod("typeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_typeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("type");
  members.insert({
    "type",
      _Magick_Image_templ::InstanceMethod("type",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_type,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("verboseAsync");
  members.insert({
    "verboseAsync",
      _Magick_Image_templ::InstanceMethod("verboseAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_verboseAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("verbose");
  members.insert({
    "verbose",
      _Magick_Image_templ::InstanceMethod("verbose",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_verbose,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("virtualPixelMethodAsync");
  members.insert({
    "virtualPixelMethodAsync",
      _Magick_Image_templ::InstanceMethod("virtualPixelMethodAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_virtualPixelMethodAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("virtualPixelMethod");
  members.insert({
    "virtualPixelMethod",
      _Magick_Image_templ::InstanceMethod("virtualPixelMethod",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_virtualPixelMethod,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x11DisplayAsync");
  members.insert({
    "x11DisplayAsync",
      _Magick_Image_templ::InstanceMethod("x11DisplayAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_x11DisplayAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("x11Display");
  members.insert({
    "x11Display",
      _Magick_Image_templ::InstanceMethod("x11Display",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_x11Display,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("xResolutionAsync");
  members.insert({
    "xResolutionAsync",
      _Magick_Image_templ::InstanceMethod("xResolutionAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_xResolutionAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("xResolution");
  members.insert({
    "xResolution",
      _Magick_Image_templ::InstanceMethod("xResolution",
        &_Magick_Image_templ::_wrap_Magick_Image_xResolution,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("yResolutionAsync");
  members.insert({
    "yResolutionAsync",
      _Magick_Image_templ::InstanceMethod("yResolutionAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_yResolutionAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("yResolution");
  members.insert({
    "yResolution",
      _Magick_Image_templ::InstanceMethod("yResolution",
        &_Magick_Image_templ::_wrap_Magick_Image_yResolution,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveBlurAsync");
  members.insert({
    "adaptiveBlurAsync",
      _Magick_Image_templ::InstanceMethod("adaptiveBlurAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveBlurAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveBlur");
  members.insert({
    "adaptiveBlur",
      _Magick_Image_templ::InstanceMethod("adaptiveBlur",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveBlur,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveResizeAsync");
  members.insert({
    "adaptiveResizeAsync",
      _Magick_Image_templ::InstanceMethod("adaptiveResizeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_adaptiveResizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveResize");
  members.insert({
    "adaptiveResize",
      _Magick_Image_templ::InstanceMethod("adaptiveResize",
        &_Magick_Image_templ::_wrap_Magick_Image_adaptiveResize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveSharpenAsync");
  members.insert({
    "adaptiveSharpenAsync",
      _Magick_Image_templ::InstanceMethod("adaptiveSharpenAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveSharpenAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveSharpen");
  members.insert({
    "adaptiveSharpen",
      _Magick_Image_templ::InstanceMethod("adaptiveSharpen",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveSharpen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveSharpenChannelAsync");
  members.insert({
    "adaptiveSharpenChannelAsync",
      _Magick_Image_templ::InstanceMethod("adaptiveSharpenChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveSharpenChannel");
  members.insert({
    "adaptiveSharpenChannel",
      _Magick_Image_templ::InstanceMethod("adaptiveSharpenChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveSharpenChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveThresholdAsync");
  members.insert({
    "adaptiveThresholdAsync",
      _Magick_Image_templ::InstanceMethod("adaptiveThresholdAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveThresholdAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("adaptiveThreshold");
  members.insert({
    "adaptiveThreshold",
      _Magick_Image_templ::InstanceMethod("adaptiveThreshold",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_adaptiveThreshold,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("addNoiseAsync");
  members.insert({
    "addNoiseAsync",
      _Magick_Image_templ::InstanceMethod("addNoiseAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_addNoiseAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("addNoise");
  members.insert({
    "addNoise",
      _Magick_Image_templ::InstanceMethod("addNoise",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_addNoise,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("addNoiseChannelAsync");
  members.insert({
    "addNoiseChannelAsync",
      _Magick_Image_templ::InstanceMethod("addNoiseChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_addNoiseChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("addNoiseChannel");
  members.insert({
    "addNoiseChannel",
      _Magick_Image_templ::InstanceMethod("addNoiseChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_addNoiseChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("affineTransformAsync");
  members.insert({
    "affineTransformAsync",
      _Magick_Image_templ::InstanceMethod("affineTransformAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_affineTransformAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("affineTransform");
  members.insert({
    "affineTransform",
      _Magick_Image_templ::InstanceMethod("affineTransform",
        &_Magick_Image_templ::_wrap_Magick_Image_affineTransform,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("alphaAsync");
  members.insert({
    "alphaAsync",
      _Magick_Image_templ::InstanceMethod("alphaAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_alphaAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("alpha");
  members.insert({
    "alpha",
      _Magick_Image_templ::InstanceMethod("alpha",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_alpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("alphaChannelAsync");
  members.insert({
    "alphaChannelAsync",
      _Magick_Image_templ::InstanceMethod("alphaChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_alphaChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("alphaChannel");
  members.insert({
    "alphaChannel",
      _Magick_Image_templ::InstanceMethod("alphaChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_alphaChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("annotateAsync");
  members.insert({
    "annotateAsync",
      _Magick_Image_templ::InstanceMethod("annotateAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_annotateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("annotate");
  members.insert({
    "annotate",
      _Magick_Image_templ::InstanceMethod("annotate",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_annotate,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("artifactAsync");
  members.insert({
    "artifactAsync",
      _Magick_Image_templ::InstanceMethod("artifactAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_artifactAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("artifact");
  members.insert({
    "artifact",
      _Magick_Image_templ::InstanceMethod("artifact",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_artifact,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("attributeAsync");
  members.insert({
    "attributeAsync",
      _Magick_Image_templ::InstanceMethod("attributeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_attributeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("attribute");
  members.insert({
    "attribute",
      _Magick_Image_templ::InstanceMethod("attribute",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_attribute,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoGammaAsync");
  members.insert({
    "autoGammaAsync",
      _Magick_Image_templ::InstanceMethod("autoGammaAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_autoGammaAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoGamma");
  members.insert({
    "autoGamma",
      _Magick_Image_templ::InstanceMethod("autoGamma",
        &_Magick_Image_templ::_wrap_Magick_Image_autoGamma,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoGammaChannelAsync");
  members.insert({
    "autoGammaChannelAsync",
      _Magick_Image_templ::InstanceMethod("autoGammaChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_autoGammaChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoGammaChannel");
  members.insert({
    "autoGammaChannel",
      _Magick_Image_templ::InstanceMethod("autoGammaChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_autoGammaChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoLevelAsync");
  members.insert({
    "autoLevelAsync",
      _Magick_Image_templ::InstanceMethod("autoLevelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_autoLevelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoLevel");
  members.insert({
    "autoLevel",
      _Magick_Image_templ::InstanceMethod("autoLevel",
        &_Magick_Image_templ::_wrap_Magick_Image_autoLevel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoLevelChannelAsync");
  members.insert({
    "autoLevelChannelAsync",
      _Magick_Image_templ::InstanceMethod("autoLevelChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_autoLevelChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoLevelChannel");
  members.insert({
    "autoLevelChannel",
      _Magick_Image_templ::InstanceMethod("autoLevelChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_autoLevelChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoOrientAsync");
  members.insert({
    "autoOrientAsync",
      _Magick_Image_templ::InstanceMethod("autoOrientAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_autoOrientAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoOrient");
  members.insert({
    "autoOrient",
      _Magick_Image_templ::InstanceMethod("autoOrient",
        &_Magick_Image_templ::_wrap_Magick_Image_autoOrient,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoThresholdAsync");
  members.insert({
    "autoThresholdAsync",
      _Magick_Image_templ::InstanceMethod("autoThresholdAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_autoThresholdAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("autoThreshold");
  members.insert({
    "autoThreshold",
      _Magick_Image_templ::InstanceMethod("autoThreshold",
        &_Magick_Image_templ::_wrap_Magick_Image_autoThreshold,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blackThresholdAsync");
  members.insert({
    "blackThresholdAsync",
      _Magick_Image_templ::InstanceMethod("blackThresholdAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_blackThresholdAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blackThreshold");
  members.insert({
    "blackThreshold",
      _Magick_Image_templ::InstanceMethod("blackThreshold",
        &_Magick_Image_templ::_wrap_Magick_Image_blackThreshold,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blackThresholdChannelAsync");
  members.insert({
    "blackThresholdChannelAsync",
      _Magick_Image_templ::InstanceMethod("blackThresholdChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_blackThresholdChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blackThresholdChannel");
  members.insert({
    "blackThresholdChannel",
      _Magick_Image_templ::InstanceMethod("blackThresholdChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_blackThresholdChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blueShiftAsync");
  members.insert({
    "blueShiftAsync",
      _Magick_Image_templ::InstanceMethod("blueShiftAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blueShiftAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blueShift");
  members.insert({
    "blueShift",
      _Magick_Image_templ::InstanceMethod("blueShift",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blueShift,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blurAsync");
  members.insert({
    "blurAsync",
      _Magick_Image_templ::InstanceMethod("blurAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blurAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blur");
  members.insert({
    "blur",
      _Magick_Image_templ::InstanceMethod("blur",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blur,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blurChannelAsync");
  members.insert({
    "blurChannelAsync",
      _Magick_Image_templ::InstanceMethod("blurChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blurChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("blurChannel");
  members.insert({
    "blurChannel",
      _Magick_Image_templ::InstanceMethod("blurChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_blurChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("borderAsync");
  members.insert({
    "borderAsync",
      _Magick_Image_templ::InstanceMethod("borderAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_borderAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("border");
  members.insert({
    "border",
      _Magick_Image_templ::InstanceMethod("border",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_border,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("brightnessContrastAsync");
  members.insert({
    "brightnessContrastAsync",
      _Magick_Image_templ::InstanceMethod("brightnessContrastAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_brightnessContrastAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("brightnessContrast");
  members.insert({
    "brightnessContrast",
      _Magick_Image_templ::InstanceMethod("brightnessContrast",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_brightnessContrast,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("brightnessContrastChannelAsync");
  members.insert({
    "brightnessContrastChannelAsync",
      _Magick_Image_templ::InstanceMethod("brightnessContrastChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_brightnessContrastChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("brightnessContrastChannel");
  members.insert({
    "brightnessContrastChannel",
      _Magick_Image_templ::InstanceMethod("brightnessContrastChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_brightnessContrastChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cannyEdgeAsync");
  members.insert({
    "cannyEdgeAsync",
      _Magick_Image_templ::InstanceMethod("cannyEdgeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_cannyEdgeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cannyEdge");
  members.insert({
    "cannyEdge",
      _Magick_Image_templ::InstanceMethod("cannyEdge",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_cannyEdge,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cdlAsync");
  members.insert({
    "cdlAsync",
      _Magick_Image_templ::InstanceMethod("cdlAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_cdlAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cdl");
  members.insert({
    "cdl",
      _Magick_Image_templ::InstanceMethod("cdl",
        &_Magick_Image_templ::_wrap_Magick_Image_cdl,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channelAsync");
  members.insert({
    "channelAsync",
      _Magick_Image_templ::InstanceMethod("channelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_channelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("channel");
  members.insert({
    "channel",
      _Magick_Image_templ::InstanceMethod("channel",
        &_Magick_Image_templ::_wrap_Magick_Image_channel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("charcoalAsync");
  members.insert({
    "charcoalAsync",
      _Magick_Image_templ::InstanceMethod("charcoalAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_charcoalAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("charcoal");
  members.insert({
    "charcoal",
      _Magick_Image_templ::InstanceMethod("charcoal",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_charcoal,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("charcoalChannelAsync");
  members.insert({
    "charcoalChannelAsync",
      _Magick_Image_templ::InstanceMethod("charcoalChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_charcoalChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("charcoalChannel");
  members.insert({
    "charcoalChannel",
      _Magick_Image_templ::InstanceMethod("charcoalChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_charcoalChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chopAsync");
  members.insert({
    "chopAsync",
      _Magick_Image_templ::InstanceMethod("chopAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_chopAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chop");
  members.insert({
    "chop",
      _Magick_Image_templ::InstanceMethod("chop",
        &_Magick_Image_templ::_wrap_Magick_Image_chop,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaBluePrimaryAsync");
  members.insert({
    "chromaBluePrimaryAsync",
      _Magick_Image_templ::InstanceMethod("chromaBluePrimaryAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaBluePrimaryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaBluePrimary");
  members.insert({
    "chromaBluePrimary",
      _Magick_Image_templ::InstanceMethod("chromaBluePrimary",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaBluePrimary,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaGreenPrimaryAsync");
  members.insert({
    "chromaGreenPrimaryAsync",
      _Magick_Image_templ::InstanceMethod("chromaGreenPrimaryAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaGreenPrimaryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaGreenPrimary");
  members.insert({
    "chromaGreenPrimary",
      _Magick_Image_templ::InstanceMethod("chromaGreenPrimary",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaGreenPrimary,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaRedPrimaryAsync");
  members.insert({
    "chromaRedPrimaryAsync",
      _Magick_Image_templ::InstanceMethod("chromaRedPrimaryAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaRedPrimaryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaRedPrimary");
  members.insert({
    "chromaRedPrimary",
      _Magick_Image_templ::InstanceMethod("chromaRedPrimary",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaRedPrimary,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaWhitePointAsync");
  members.insert({
    "chromaWhitePointAsync",
      _Magick_Image_templ::InstanceMethod("chromaWhitePointAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaWhitePointAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("chromaWhitePoint");
  members.insert({
    "chromaWhitePoint",
      _Magick_Image_templ::InstanceMethod("chromaWhitePoint",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_chromaWhitePoint,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clampAsync");
  members.insert({
    "clampAsync",
      _Magick_Image_templ::InstanceMethod("clampAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_clampAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clamp");
  members.insert({
    "clamp",
      _Magick_Image_templ::InstanceMethod("clamp",
        &_Magick_Image_templ::_wrap_Magick_Image_clamp,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clampChannelAsync");
  members.insert({
    "clampChannelAsync",
      _Magick_Image_templ::InstanceMethod("clampChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_clampChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clampChannel");
  members.insert({
    "clampChannel",
      _Magick_Image_templ::InstanceMethod("clampChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_clampChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clipAsync");
  members.insert({
    "clipAsync",
      _Magick_Image_templ::InstanceMethod("clipAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_clipAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clip");
  members.insert({
    "clip",
      _Magick_Image_templ::InstanceMethod("clip",
        &_Magick_Image_templ::_wrap_Magick_Image_clip,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clipPathAsync");
  members.insert({
    "clipPathAsync",
      _Magick_Image_templ::InstanceMethod("clipPathAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_clipPathAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clipPath");
  members.insert({
    "clipPath",
      _Magick_Image_templ::InstanceMethod("clipPath",
        &_Magick_Image_templ::_wrap_Magick_Image_clipPath,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clutAsync");
  members.insert({
    "clutAsync",
      _Magick_Image_templ::InstanceMethod("clutAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_clutAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clut");
  members.insert({
    "clut",
      _Magick_Image_templ::InstanceMethod("clut",
        &_Magick_Image_templ::_wrap_Magick_Image_clut,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clutChannelAsync");
  members.insert({
    "clutChannelAsync",
      _Magick_Image_templ::InstanceMethod("clutChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_clutChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clutChannel");
  members.insert({
    "clutChannel",
      _Magick_Image_templ::InstanceMethod("clutChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_clutChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorizeAsync");
  members.insert({
    "colorizeAsync",
      _Magick_Image_templ::InstanceMethod("colorizeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorize");
  members.insert({
    "colorize",
      _Magick_Image_templ::InstanceMethod("colorize",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorMapAsync");
  members.insert({
    "colorMapAsync",
      _Magick_Image_templ::InstanceMethod("colorMapAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorMapAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorMap");
  members.insert({
    "colorMap",
      _Magick_Image_templ::InstanceMethod("colorMap",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_colorMap,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorMatrixAsync");
  members.insert({
    "colorMatrixAsync",
      _Magick_Image_templ::InstanceMethod("colorMatrixAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_colorMatrixAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("colorMatrix");
  members.insert({
    "colorMatrix",
      _Magick_Image_templ::InstanceMethod("colorMatrix",
        &_Magick_Image_templ::_wrap_Magick_Image_colorMatrix,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compareAsync");
  members.insert({
    "compareAsync",
      _Magick_Image_templ::InstanceMethod("compareAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compareAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compare");
  members.insert({
    "compare",
      _Magick_Image_templ::InstanceMethod("compare",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compare,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compareChannelAsync");
  members.insert({
    "compareChannelAsync",
      _Magick_Image_templ::InstanceMethod("compareChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compareChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compareChannel");
  members.insert({
    "compareChannel",
      _Magick_Image_templ::InstanceMethod("compareChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compareChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("compositeAsync");
  members.insert({
    "compositeAsync",
      _Magick_Image_templ::InstanceMethod("compositeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_compositeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("composite");
  members.insert({
    "composite",
      _Magick_Image_templ::InstanceMethod("composite",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_composite,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("connectedComponentsAsync");
  members.insert({
    "connectedComponentsAsync",
      _Magick_Image_templ::InstanceMethod("connectedComponentsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_connectedComponentsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("connectedComponents");
  members.insert({
    "connectedComponents",
      _Magick_Image_templ::InstanceMethod("connectedComponents",
        &_Magick_Image_templ::_wrap_Magick_Image_connectedComponents,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("contrastAsync");
  members.insert({
    "contrastAsync",
      _Magick_Image_templ::InstanceMethod("contrastAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_contrastAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("contrast");
  members.insert({
    "contrast",
      _Magick_Image_templ::InstanceMethod("contrast",
        &_Magick_Image_templ::_wrap_Magick_Image_contrast,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("contrastStretchAsync");
  members.insert({
    "contrastStretchAsync",
      _Magick_Image_templ::InstanceMethod("contrastStretchAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_contrastStretchAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("contrastStretch");
  members.insert({
    "contrastStretch",
      _Magick_Image_templ::InstanceMethod("contrastStretch",
        &_Magick_Image_templ::_wrap_Magick_Image_contrastStretch,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("contrastStretchChannelAsync");
  members.insert({
    "contrastStretchChannelAsync",
      _Magick_Image_templ::InstanceMethod("contrastStretchChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_contrastStretchChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("contrastStretchChannel");
  members.insert({
    "contrastStretchChannel",
      _Magick_Image_templ::InstanceMethod("contrastStretchChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_contrastStretchChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("convolveAsync");
  members.insert({
    "convolveAsync",
      _Magick_Image_templ::InstanceMethod("convolveAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_convolveAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("convolve");
  members.insert({
    "convolve",
      _Magick_Image_templ::InstanceMethod("convolve",
        &_Magick_Image_templ::_wrap_Magick_Image_convolve,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copyPixelsAsync");
  members.insert({
    "copyPixelsAsync",
      _Magick_Image_templ::InstanceMethod("copyPixelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_copyPixelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("copyPixels");
  members.insert({
    "copyPixels",
      _Magick_Image_templ::InstanceMethod("copyPixels",
        &_Magick_Image_templ::_wrap_Magick_Image_copyPixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cropAsync");
  members.insert({
    "cropAsync",
      _Magick_Image_templ::InstanceMethod("cropAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_cropAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("crop");
  members.insert({
    "crop",
      _Magick_Image_templ::InstanceMethod("crop",
        &_Magick_Image_templ::_wrap_Magick_Image_crop,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cycleColormapAsync");
  members.insert({
    "cycleColormapAsync",
      _Magick_Image_templ::InstanceMethod("cycleColormapAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_cycleColormapAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("cycleColormap");
  members.insert({
    "cycleColormap",
      _Magick_Image_templ::InstanceMethod("cycleColormap",
        &_Magick_Image_templ::_wrap_Magick_Image_cycleColormap,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("decipherAsync");
  members.insert({
    "decipherAsync",
      _Magick_Image_templ::InstanceMethod("decipherAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_decipherAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("decipher");
  members.insert({
    "decipher",
      _Magick_Image_templ::InstanceMethod("decipher",
        &_Magick_Image_templ::_wrap_Magick_Image_decipher,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("defineSetAsync");
  members.insert({
    "defineSetAsync",
      _Magick_Image_templ::InstanceMethod("defineSetAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_defineSetAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("defineSet");
  members.insert({
    "defineSet",
      _Magick_Image_templ::InstanceMethod("defineSet",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_defineSet,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("defineValueAsync");
  members.insert({
    "defineValueAsync",
      _Magick_Image_templ::InstanceMethod("defineValueAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_defineValueAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("defineValue");
  members.insert({
    "defineValue",
      _Magick_Image_templ::InstanceMethod("defineValue",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_defineValue,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("deskewAsync");
  members.insert({
    "deskewAsync",
      _Magick_Image_templ::InstanceMethod("deskewAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_deskewAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("deskew");
  members.insert({
    "deskew",
      _Magick_Image_templ::InstanceMethod("deskew",
        &_Magick_Image_templ::_wrap_Magick_Image_deskew,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("despeckleAsync");
  members.insert({
    "despeckleAsync",
      _Magick_Image_templ::InstanceMethod("despeckleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_despeckleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("despeckle");
  members.insert({
    "despeckle",
      _Magick_Image_templ::InstanceMethod("despeckle",
        &_Magick_Image_templ::_wrap_Magick_Image_despeckle,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("displayAsync");
  members.insert({
    "displayAsync",
      _Magick_Image_templ::InstanceMethod("displayAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_displayAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("display");
  members.insert({
    "display",
      _Magick_Image_templ::InstanceMethod("display",
        &_Magick_Image_templ::_wrap_Magick_Image_display,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("distortAsync");
  members.insert({
    "distortAsync",
      _Magick_Image_templ::InstanceMethod("distortAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_distortAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("distort");
  members.insert({
    "distort",
      _Magick_Image_templ::InstanceMethod("distort",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_distort,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("drawAsync");
  members.insert({
    "drawAsync",
      _Magick_Image_templ::InstanceMethod("drawAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_drawAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("draw");
  members.insert({
    "draw",
      _Magick_Image_templ::InstanceMethod("draw",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_draw,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("edgeAsync");
  members.insert({
    "edgeAsync",
      _Magick_Image_templ::InstanceMethod("edgeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_edgeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("edge");
  members.insert({
    "edge",
      _Magick_Image_templ::InstanceMethod("edge",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_edge,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("embossAsync");
  members.insert({
    "embossAsync",
      _Magick_Image_templ::InstanceMethod("embossAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_embossAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("emboss");
  members.insert({
    "emboss",
      _Magick_Image_templ::InstanceMethod("emboss",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_emboss,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("encipherAsync");
  members.insert({
    "encipherAsync",
      _Magick_Image_templ::InstanceMethod("encipherAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_encipherAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("encipher");
  members.insert({
    "encipher",
      _Magick_Image_templ::InstanceMethod("encipher",
        &_Magick_Image_templ::_wrap_Magick_Image_encipher,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("enhanceAsync");
  members.insert({
    "enhanceAsync",
      _Magick_Image_templ::InstanceMethod("enhanceAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_enhanceAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("enhance");
  members.insert({
    "enhance",
      _Magick_Image_templ::InstanceMethod("enhance",
        &_Magick_Image_templ::_wrap_Magick_Image_enhance,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("equalizeAsync");
  members.insert({
    "equalizeAsync",
      _Magick_Image_templ::InstanceMethod("equalizeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_equalizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("equalize");
  members.insert({
    "equalize",
      _Magick_Image_templ::InstanceMethod("equalize",
        &_Magick_Image_templ::_wrap_Magick_Image_equalize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("eraseAsync");
  members.insert({
    "eraseAsync",
      _Magick_Image_templ::InstanceMethod("eraseAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_eraseAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("erase");
  members.insert({
    "erase",
      _Magick_Image_templ::InstanceMethod("erase",
        &_Magick_Image_templ::_wrap_Magick_Image_erase,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("evaluateAsync");
  members.insert({
    "evaluateAsync",
      _Magick_Image_templ::InstanceMethod("evaluateAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_evaluateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("evaluate");
  members.insert({
    "evaluate",
      _Magick_Image_templ::InstanceMethod("evaluate",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_evaluate,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("extentAsync");
  members.insert({
    "extentAsync",
      _Magick_Image_templ::InstanceMethod("extentAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_extentAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("extent");
  members.insert({
    "extent",
      _Magick_Image_templ::InstanceMethod("extent",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_extent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("flipAsync");
  members.insert({
    "flipAsync",
      _Magick_Image_templ::InstanceMethod("flipAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_flipAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("flip");
  members.insert({
    "flip",
      _Magick_Image_templ::InstanceMethod("flip",
        &_Magick_Image_templ::_wrap_Magick_Image_flip,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("floodFillAlphaAsync");
  members.insert({
    "floodFillAlphaAsync",
      _Magick_Image_templ::InstanceMethod("floodFillAlphaAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_floodFillAlphaAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("floodFillAlpha");
  members.insert({
    "floodFillAlpha",
      _Magick_Image_templ::InstanceMethod("floodFillAlpha",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_floodFillAlpha,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("floodFillColorAsync");
  members.insert({
    "floodFillColorAsync",
      _Magick_Image_templ::InstanceMethod("floodFillColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_floodFillColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("floodFillColor");
  members.insert({
    "floodFillColor",
      _Magick_Image_templ::InstanceMethod("floodFillColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_floodFillColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("floodFillTextureAsync");
  members.insert({
    "floodFillTextureAsync",
      _Magick_Image_templ::InstanceMethod("floodFillTextureAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_floodFillTextureAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("floodFillTexture");
  members.insert({
    "floodFillTexture",
      _Magick_Image_templ::InstanceMethod("floodFillTexture",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_floodFillTexture,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("flopAsync");
  members.insert({
    "flopAsync",
      _Magick_Image_templ::InstanceMethod("flopAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_flopAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("flop");
  members.insert({
    "flop",
      _Magick_Image_templ::InstanceMethod("flop",
        &_Magick_Image_templ::_wrap_Magick_Image_flop,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontTypeMetricsAsync");
  members.insert({
    "fontTypeMetricsAsync",
      _Magick_Image_templ::InstanceMethod("fontTypeMetricsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_fontTypeMetricsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontTypeMetrics");
  members.insert({
    "fontTypeMetrics",
      _Magick_Image_templ::InstanceMethod("fontTypeMetrics",
        &_Magick_Image_templ::_wrap_Magick_Image_fontTypeMetrics,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontTypeMetricsMultilineAsync");
  members.insert({
    "fontTypeMetricsMultilineAsync",
      _Magick_Image_templ::InstanceMethod("fontTypeMetricsMultilineAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_fontTypeMetricsMultilineAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontTypeMetricsMultiline");
  members.insert({
    "fontTypeMetricsMultiline",
      _Magick_Image_templ::InstanceMethod("fontTypeMetricsMultiline",
        &_Magick_Image_templ::_wrap_Magick_Image_fontTypeMetricsMultiline,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("frameAsync");
  members.insert({
    "frameAsync",
      _Magick_Image_templ::InstanceMethod("frameAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_frameAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("frame");
  members.insert({
    "frame",
      _Magick_Image_templ::InstanceMethod("frame",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_frame,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fxAsync");
  members.insert({
    "fxAsync",
      _Magick_Image_templ::InstanceMethod("fxAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fxAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fx");
  members.insert({
    "fx",
      _Magick_Image_templ::InstanceMethod("fx",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_fx,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gammaAsync");
  members.insert({
    "gammaAsync",
      _Magick_Image_templ::InstanceMethod("gammaAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_gammaAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gamma");
  members.insert({
    "gamma",
      _Magick_Image_templ::InstanceMethod("gamma",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_gamma,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gaussianBlurAsync");
  members.insert({
    "gaussianBlurAsync",
      _Magick_Image_templ::InstanceMethod("gaussianBlurAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_gaussianBlurAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gaussianBlur");
  members.insert({
    "gaussianBlur",
      _Magick_Image_templ::InstanceMethod("gaussianBlur",
        &_Magick_Image_templ::_wrap_Magick_Image_gaussianBlur,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gaussianBlurChannelAsync");
  members.insert({
    "gaussianBlurChannelAsync",
      _Magick_Image_templ::InstanceMethod("gaussianBlurChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_gaussianBlurChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gaussianBlurChannel");
  members.insert({
    "gaussianBlurChannel",
      _Magick_Image_templ::InstanceMethod("gaussianBlurChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_gaussianBlurChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getConstPixelsAsync");
  members.insert({
    "getConstPixelsAsync",
      _Magick_Image_templ::InstanceMethod("getConstPixelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_getConstPixelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getConstPixels");
  members.insert({
    "getConstPixels",
      _Magick_Image_templ::InstanceMethod("getConstPixels",
        &_Magick_Image_templ::_wrap_Magick_Image_getConstPixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getConstMetacontentAsync");
  members.insert({
    "getConstMetacontentAsync",
      _Magick_Image_templ::InstanceMethod("getConstMetacontentAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_getConstMetacontentAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getConstMetacontent");
  members.insert({
    "getConstMetacontent",
      _Magick_Image_templ::InstanceMethod("getConstMetacontent",
        &_Magick_Image_templ::_wrap_Magick_Image_getConstMetacontent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getMetacontentAsync");
  members.insert({
    "getMetacontentAsync",
      _Magick_Image_templ::InstanceMethod("getMetacontentAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_getMetacontentAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getMetacontent");
  members.insert({
    "getMetacontent",
      _Magick_Image_templ::InstanceMethod("getMetacontent",
        &_Magick_Image_templ::_wrap_Magick_Image_getMetacontent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getPixelsAsync");
  members.insert({
    "getPixelsAsync",
      _Magick_Image_templ::InstanceMethod("getPixelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_getPixelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("getPixels");
  members.insert({
    "getPixels",
      _Magick_Image_templ::InstanceMethod("getPixels",
        &_Magick_Image_templ::_wrap_Magick_Image_getPixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("grayscaleAsync");
  members.insert({
    "grayscaleAsync",
      _Magick_Image_templ::InstanceMethod("grayscaleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_grayscaleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("grayscale");
  members.insert({
    "grayscale",
      _Magick_Image_templ::InstanceMethod("grayscale",
        &_Magick_Image_templ::_wrap_Magick_Image_grayscale,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("haldClutAsync");
  members.insert({
    "haldClutAsync",
      _Magick_Image_templ::InstanceMethod("haldClutAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_haldClutAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("haldClut");
  members.insert({
    "haldClut",
      _Magick_Image_templ::InstanceMethod("haldClut",
        &_Magick_Image_templ::_wrap_Magick_Image_haldClut,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("houghLineAsync");
  members.insert({
    "houghLineAsync",
      _Magick_Image_templ::InstanceMethod("houghLineAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_houghLineAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("houghLine");
  members.insert({
    "houghLine",
      _Magick_Image_templ::InstanceMethod("houghLine",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_houghLine,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("identifyTypeAsync");
  members.insert({
    "identifyTypeAsync",
      _Magick_Image_templ::InstanceMethod("identifyTypeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_identifyTypeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("identifyType");
  members.insert({
    "identifyType",
      _Magick_Image_templ::InstanceMethod("identifyType",
        &_Magick_Image_templ::_wrap_Magick_Image_identifyType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("implodeAsync");
  members.insert({
    "implodeAsync",
      _Magick_Image_templ::InstanceMethod("implodeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_implodeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("implode");
  members.insert({
    "implode",
      _Magick_Image_templ::InstanceMethod("implode",
        &_Magick_Image_templ::_wrap_Magick_Image_implode,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("inverseFourierTransformAsync");
  members.insert({
    "inverseFourierTransformAsync",
      _Magick_Image_templ::InstanceMethod("inverseFourierTransformAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_inverseFourierTransformAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("inverseFourierTransform");
  members.insert({
    "inverseFourierTransform",
      _Magick_Image_templ::InstanceMethod("inverseFourierTransform",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_inverseFourierTransform,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("kuwaharaAsync");
  members.insert({
    "kuwaharaAsync",
      _Magick_Image_templ::InstanceMethod("kuwaharaAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_kuwaharaAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("kuwahara");
  members.insert({
    "kuwahara",
      _Magick_Image_templ::InstanceMethod("kuwahara",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_kuwahara,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("kuwaharaChannelAsync");
  members.insert({
    "kuwaharaChannelAsync",
      _Magick_Image_templ::InstanceMethod("kuwaharaChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_kuwaharaChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("kuwaharaChannel");
  members.insert({
    "kuwaharaChannel",
      _Magick_Image_templ::InstanceMethod("kuwaharaChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_kuwaharaChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelAsync");
  members.insert({
    "levelAsync",
      _Magick_Image_templ::InstanceMethod("levelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("level");
  members.insert({
    "level",
      _Magick_Image_templ::InstanceMethod("level",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_level,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelChannelAsync");
  members.insert({
    "levelChannelAsync",
      _Magick_Image_templ::InstanceMethod("levelChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelChannel");
  members.insert({
    "levelChannel",
      _Magick_Image_templ::InstanceMethod("levelChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelColorsAsync");
  members.insert({
    "levelColorsAsync",
      _Magick_Image_templ::InstanceMethod("levelColorsAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelColorsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelColors");
  members.insert({
    "levelColors",
      _Magick_Image_templ::InstanceMethod("levelColors",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelColors,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelColorsChannelAsync");
  members.insert({
    "levelColorsChannelAsync",
      _Magick_Image_templ::InstanceMethod("levelColorsChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelColorsChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelColorsChannel");
  members.insert({
    "levelColorsChannel",
      _Magick_Image_templ::InstanceMethod("levelColorsChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelColorsChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelizeAsync");
  members.insert({
    "levelizeAsync",
      _Magick_Image_templ::InstanceMethod("levelizeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelize");
  members.insert({
    "levelize",
      _Magick_Image_templ::InstanceMethod("levelize",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelizeChannelAsync");
  members.insert({
    "levelizeChannelAsync",
      _Magick_Image_templ::InstanceMethod("levelizeChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelizeChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("levelizeChannel");
  members.insert({
    "levelizeChannel",
      _Magick_Image_templ::InstanceMethod("levelizeChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_levelizeChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("linearStretchAsync");
  members.insert({
    "linearStretchAsync",
      _Magick_Image_templ::InstanceMethod("linearStretchAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_linearStretchAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("linearStretch");
  members.insert({
    "linearStretch",
      _Magick_Image_templ::InstanceMethod("linearStretch",
        &_Magick_Image_templ::_wrap_Magick_Image_linearStretch,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("liquidRescaleAsync");
  members.insert({
    "liquidRescaleAsync",
      _Magick_Image_templ::InstanceMethod("liquidRescaleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_liquidRescaleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("liquidRescale");
  members.insert({
    "liquidRescale",
      _Magick_Image_templ::InstanceMethod("liquidRescale",
        &_Magick_Image_templ::_wrap_Magick_Image_liquidRescale,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("localContrastAsync");
  members.insert({
    "localContrastAsync",
      _Magick_Image_templ::InstanceMethod("localContrastAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_localContrastAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("localContrast");
  members.insert({
    "localContrast",
      _Magick_Image_templ::InstanceMethod("localContrast",
        &_Magick_Image_templ::_wrap_Magick_Image_localContrast,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("localContrastChannelAsync");
  members.insert({
    "localContrastChannelAsync",
      _Magick_Image_templ::InstanceMethod("localContrastChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_localContrastChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("localContrastChannel");
  members.insert({
    "localContrastChannel",
      _Magick_Image_templ::InstanceMethod("localContrastChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_localContrastChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("magnifyAsync");
  members.insert({
    "magnifyAsync",
      _Magick_Image_templ::InstanceMethod("magnifyAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_magnifyAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("magnify");
  members.insert({
    "magnify",
      _Magick_Image_templ::InstanceMethod("magnify",
        &_Magick_Image_templ::_wrap_Magick_Image_magnify,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("mapAsync");
  members.insert({
    "mapAsync",
      _Magick_Image_templ::InstanceMethod("mapAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_mapAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("map");
  members.insert({
    "map",
      _Magick_Image_templ::InstanceMethod("map",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_map,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("meanShiftAsync");
  members.insert({
    "meanShiftAsync",
      _Magick_Image_templ::InstanceMethod("meanShiftAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_meanShiftAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("meanShift");
  members.insert({
    "meanShift",
      _Magick_Image_templ::InstanceMethod("meanShift",
        &_Magick_Image_templ::_wrap_Magick_Image_meanShift,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("medianFilterAsync");
  members.insert({
    "medianFilterAsync",
      _Magick_Image_templ::InstanceMethod("medianFilterAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_medianFilterAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("medianFilter");
  members.insert({
    "medianFilter",
      _Magick_Image_templ::InstanceMethod("medianFilter",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_medianFilter,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("minifyAsync");
  members.insert({
    "minifyAsync",
      _Magick_Image_templ::InstanceMethod("minifyAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_minifyAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("minify");
  members.insert({
    "minify",
      _Magick_Image_templ::InstanceMethod("minify",
        &_Magick_Image_templ::_wrap_Magick_Image_minify,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("modulateAsync");
  members.insert({
    "modulateAsync",
      _Magick_Image_templ::InstanceMethod("modulateAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_modulateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("modulate");
  members.insert({
    "modulate",
      _Magick_Image_templ::InstanceMethod("modulate",
        &_Magick_Image_templ::_wrap_Magick_Image_modulate,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("momentsAsync");
  members.insert({
    "momentsAsync",
      _Magick_Image_templ::InstanceMethod("momentsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_momentsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("moments");
  members.insert({
    "moments",
      _Magick_Image_templ::InstanceMethod("moments",
        &_Magick_Image_templ::_wrap_Magick_Image_moments,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("morphologyAsync");
  members.insert({
    "morphologyAsync",
      _Magick_Image_templ::InstanceMethod("morphologyAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_morphologyAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("morphology");
  members.insert({
    "morphology",
      _Magick_Image_templ::InstanceMethod("morphology",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_morphology,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("morphologyChannelAsync");
  members.insert({
    "morphologyChannelAsync",
      _Magick_Image_templ::InstanceMethod("morphologyChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_morphologyChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("morphologyChannel");
  members.insert({
    "morphologyChannel",
      _Magick_Image_templ::InstanceMethod("morphologyChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_morphologyChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("motionBlurAsync");
  members.insert({
    "motionBlurAsync",
      _Magick_Image_templ::InstanceMethod("motionBlurAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_motionBlurAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("motionBlur");
  members.insert({
    "motionBlur",
      _Magick_Image_templ::InstanceMethod("motionBlur",
        &_Magick_Image_templ::_wrap_Magick_Image_motionBlur,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("negateAsync");
  members.insert({
    "negateAsync",
      _Magick_Image_templ::InstanceMethod("negateAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_negateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("negate");
  members.insert({
    "negate",
      _Magick_Image_templ::InstanceMethod("negate",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_negate,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("negateChannelAsync");
  members.insert({
    "negateChannelAsync",
      _Magick_Image_templ::InstanceMethod("negateChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_negateChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("negateChannel");
  members.insert({
    "negateChannel",
      _Magick_Image_templ::InstanceMethod("negateChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_negateChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("normalizeAsync");
  members.insert({
    "normalizeAsync",
      _Magick_Image_templ::InstanceMethod("normalizeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_normalizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("normalize");
  members.insert({
    "normalize",
      _Magick_Image_templ::InstanceMethod("normalize",
        &_Magick_Image_templ::_wrap_Magick_Image_normalize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("oilPaintAsync");
  members.insert({
    "oilPaintAsync",
      _Magick_Image_templ::InstanceMethod("oilPaintAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_oilPaintAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("oilPaint");
  members.insert({
    "oilPaint",
      _Magick_Image_templ::InstanceMethod("oilPaint",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_oilPaint,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("opaqueAsync");
  members.insert({
    "opaqueAsync",
      _Magick_Image_templ::InstanceMethod("opaqueAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_opaqueAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("opaque");
  members.insert({
    "opaque",
      _Magick_Image_templ::InstanceMethod("opaque",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_opaque,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("orderedDitherAsync");
  members.insert({
    "orderedDitherAsync",
      _Magick_Image_templ::InstanceMethod("orderedDitherAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_orderedDitherAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("orderedDither");
  members.insert({
    "orderedDither",
      _Magick_Image_templ::InstanceMethod("orderedDither",
        &_Magick_Image_templ::_wrap_Magick_Image_orderedDither,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("orderedDitherChannelAsync");
  members.insert({
    "orderedDitherChannelAsync",
      _Magick_Image_templ::InstanceMethod("orderedDitherChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_orderedDitherChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("orderedDitherChannel");
  members.insert({
    "orderedDitherChannel",
      _Magick_Image_templ::InstanceMethod("orderedDitherChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_orderedDitherChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perceptibleAsync");
  members.insert({
    "perceptibleAsync",
      _Magick_Image_templ::InstanceMethod("perceptibleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_perceptibleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perceptible");
  members.insert({
    "perceptible",
      _Magick_Image_templ::InstanceMethod("perceptible",
        &_Magick_Image_templ::_wrap_Magick_Image_perceptible,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perceptibleChannelAsync");
  members.insert({
    "perceptibleChannelAsync",
      _Magick_Image_templ::InstanceMethod("perceptibleChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_perceptibleChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perceptibleChannel");
  members.insert({
    "perceptibleChannel",
      _Magick_Image_templ::InstanceMethod("perceptibleChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_perceptibleChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perceptualHashAsync");
  members.insert({
    "perceptualHashAsync",
      _Magick_Image_templ::InstanceMethod("perceptualHashAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_perceptualHashAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("perceptualHash");
  members.insert({
    "perceptualHash",
      _Magick_Image_templ::InstanceMethod("perceptualHash",
        &_Magick_Image_templ::_wrap_Magick_Image_perceptualHash,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pingAsync");
  members.insert({
    "pingAsync",
      _Magick_Image_templ::InstanceMethod("pingAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_pingAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ping");
  members.insert({
    "ping",
      _Magick_Image_templ::InstanceMethod("ping",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_ping,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelColorAsync");
  members.insert({
    "pixelColorAsync",
      _Magick_Image_templ::InstanceMethod("pixelColorAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_pixelColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pixelColor");
  members.insert({
    "pixelColor",
      _Magick_Image_templ::InstanceMethod("pixelColor",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_pixelColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("polaroidAsync");
  members.insert({
    "polaroidAsync",
      _Magick_Image_templ::InstanceMethod("polaroidAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_polaroidAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("polaroid");
  members.insert({
    "polaroid",
      _Magick_Image_templ::InstanceMethod("polaroid",
        &_Magick_Image_templ::_wrap_Magick_Image_polaroid,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("posterizeAsync");
  members.insert({
    "posterizeAsync",
      _Magick_Image_templ::InstanceMethod("posterizeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_posterizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("posterize");
  members.insert({
    "posterize",
      _Magick_Image_templ::InstanceMethod("posterize",
        &_Magick_Image_templ::_wrap_Magick_Image_posterize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("posterizeChannelAsync");
  members.insert({
    "posterizeChannelAsync",
      _Magick_Image_templ::InstanceMethod("posterizeChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_posterizeChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("posterizeChannel");
  members.insert({
    "posterizeChannel",
      _Magick_Image_templ::InstanceMethod("posterizeChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_posterizeChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("processAsync");
  members.insert({
    "processAsync",
      _Magick_Image_templ::InstanceMethod("processAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_processAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("process");
  members.insert({
    "process",
      _Magick_Image_templ::InstanceMethod("process",
        &_Magick_Image_templ::_wrap_Magick_Image_process,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("profileAsync");
  members.insert({
    "profileAsync",
      _Magick_Image_templ::InstanceMethod("profileAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_profileAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("profile");
  members.insert({
    "profile",
      _Magick_Image_templ::InstanceMethod("profile",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_profile,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeAsync");
  members.insert({
    "quantizeAsync",
      _Magick_Image_templ::InstanceMethod("quantizeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantize");
  members.insert({
    "quantize",
      _Magick_Image_templ::InstanceMethod("quantize",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_quantize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("raiseAsync");
  members.insert({
    "raiseAsync",
      _Magick_Image_templ::InstanceMethod("raiseAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_raiseAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("raise");
  members.insert({
    "raise",
      _Magick_Image_templ::InstanceMethod("raise",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_raise,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("randomThresholdAsync");
  members.insert({
    "randomThresholdAsync",
      _Magick_Image_templ::InstanceMethod("randomThresholdAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_randomThresholdAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("randomThreshold");
  members.insert({
    "randomThreshold",
      _Magick_Image_templ::InstanceMethod("randomThreshold",
        &_Magick_Image_templ::_wrap_Magick_Image_randomThreshold,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("randomThresholdChannelAsync");
  members.insert({
    "randomThresholdChannelAsync",
      _Magick_Image_templ::InstanceMethod("randomThresholdChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_randomThresholdChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("randomThresholdChannel");
  members.insert({
    "randomThresholdChannel",
      _Magick_Image_templ::InstanceMethod("randomThresholdChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_randomThresholdChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("readAsync");
  members.insert({
    "readAsync",
      _Magick_Image_templ::InstanceMethod("readAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_readAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("read");
  members.insert({
    "read",
      _Magick_Image_templ::InstanceMethod("read",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_read,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("readMaskAsync");
  members.insert({
    "readMaskAsync",
      _Magick_Image_templ::InstanceMethod("readMaskAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_readMaskAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("readMask");
  members.insert({
    "readMask",
      _Magick_Image_templ::InstanceMethod("readMask",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_readMask,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("readPixelsAsync");
  members.insert({
    "readPixelsAsync",
      _Magick_Image_templ::InstanceMethod("readPixelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_readPixelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("readPixels");
  members.insert({
    "readPixels",
      _Magick_Image_templ::InstanceMethod("readPixels",
        &_Magick_Image_templ::_wrap_Magick_Image_readPixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("reduceNoiseAsync");
  members.insert({
    "reduceNoiseAsync",
      _Magick_Image_templ::InstanceMethod("reduceNoiseAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_reduceNoiseAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("reduceNoise");
  members.insert({
    "reduceNoise",
      _Magick_Image_templ::InstanceMethod("reduceNoise",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_reduceNoise,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("repageAsync");
  members.insert({
    "repageAsync",
      _Magick_Image_templ::InstanceMethod("repageAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_repageAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("repage");
  members.insert({
    "repage",
      _Magick_Image_templ::InstanceMethod("repage",
        &_Magick_Image_templ::_wrap_Magick_Image_repage,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("resampleAsync");
  members.insert({
    "resampleAsync",
      _Magick_Image_templ::InstanceMethod("resampleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_resampleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("resample");
  members.insert({
    "resample",
      _Magick_Image_templ::InstanceMethod("resample",
        &_Magick_Image_templ::_wrap_Magick_Image_resample,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("resizeAsync");
  members.insert({
    "resizeAsync",
      _Magick_Image_templ::InstanceMethod("resizeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_resizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("resize");
  members.insert({
    "resize",
      _Magick_Image_templ::InstanceMethod("resize",
        &_Magick_Image_templ::_wrap_Magick_Image_resize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rollAsync");
  members.insert({
    "rollAsync",
      _Magick_Image_templ::InstanceMethod("rollAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_rollAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("roll");
  members.insert({
    "roll",
      _Magick_Image_templ::InstanceMethod("roll",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_roll,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rotateAsync");
  members.insert({
    "rotateAsync",
      _Magick_Image_templ::InstanceMethod("rotateAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_rotateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rotate");
  members.insert({
    "rotate",
      _Magick_Image_templ::InstanceMethod("rotate",
        &_Magick_Image_templ::_wrap_Magick_Image_rotate,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rotationalBlurAsync");
  members.insert({
    "rotationalBlurAsync",
      _Magick_Image_templ::InstanceMethod("rotationalBlurAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_rotationalBlurAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rotationalBlur");
  members.insert({
    "rotationalBlur",
      _Magick_Image_templ::InstanceMethod("rotationalBlur",
        &_Magick_Image_templ::_wrap_Magick_Image_rotationalBlur,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rotationalBlurChannelAsync");
  members.insert({
    "rotationalBlurChannelAsync",
      _Magick_Image_templ::InstanceMethod("rotationalBlurChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_rotationalBlurChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("rotationalBlurChannel");
  members.insert({
    "rotationalBlurChannel",
      _Magick_Image_templ::InstanceMethod("rotationalBlurChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_rotationalBlurChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sampleAsync");
  members.insert({
    "sampleAsync",
      _Magick_Image_templ::InstanceMethod("sampleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_sampleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sample");
  members.insert({
    "sample",
      _Magick_Image_templ::InstanceMethod("sample",
        &_Magick_Image_templ::_wrap_Magick_Image_sample,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("scaleAsync");
  members.insert({
    "scaleAsync",
      _Magick_Image_templ::InstanceMethod("scaleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_scaleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("scale");
  members.insert({
    "scale",
      _Magick_Image_templ::InstanceMethod("scale",
        &_Magick_Image_templ::_wrap_Magick_Image_scale,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("segmentAsync");
  members.insert({
    "segmentAsync",
      _Magick_Image_templ::InstanceMethod("segmentAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_segmentAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("segment");
  members.insert({
    "segment",
      _Magick_Image_templ::InstanceMethod("segment",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_segment,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("selectiveBlurAsync");
  members.insert({
    "selectiveBlurAsync",
      _Magick_Image_templ::InstanceMethod("selectiveBlurAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_selectiveBlurAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("selectiveBlur");
  members.insert({
    "selectiveBlur",
      _Magick_Image_templ::InstanceMethod("selectiveBlur",
        &_Magick_Image_templ::_wrap_Magick_Image_selectiveBlur,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("selectiveBlurChannelAsync");
  members.insert({
    "selectiveBlurChannelAsync",
      _Magick_Image_templ::InstanceMethod("selectiveBlurChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_selectiveBlurChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("selectiveBlurChannel");
  members.insert({
    "selectiveBlurChannel",
      _Magick_Image_templ::InstanceMethod("selectiveBlurChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_selectiveBlurChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("separateAsync");
  members.insert({
    "separateAsync",
      _Magick_Image_templ::InstanceMethod("separateAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_separateAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("separate");
  members.insert({
    "separate",
      _Magick_Image_templ::InstanceMethod("separate",
        &_Magick_Image_templ::_wrap_Magick_Image_separate,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sepiaToneAsync");
  members.insert({
    "sepiaToneAsync",
      _Magick_Image_templ::InstanceMethod("sepiaToneAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_sepiaToneAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sepiaTone");
  members.insert({
    "sepiaTone",
      _Magick_Image_templ::InstanceMethod("sepiaTone",
        &_Magick_Image_templ::_wrap_Magick_Image_sepiaTone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("setColorMetricAsync");
  members.insert({
    "setColorMetricAsync",
      _Magick_Image_templ::InstanceMethod("setColorMetricAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_setColorMetricAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("setColorMetric");
  members.insert({
    "setColorMetric",
      _Magick_Image_templ::InstanceMethod("setColorMetric",
        &_Magick_Image_templ::_wrap_Magick_Image_setColorMetric,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("setPixelsAsync");
  members.insert({
    "setPixelsAsync",
      _Magick_Image_templ::InstanceMethod("setPixelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_setPixelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("setPixels");
  members.insert({
    "setPixels",
      _Magick_Image_templ::InstanceMethod("setPixels",
        &_Magick_Image_templ::_wrap_Magick_Image_setPixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shadeAsync");
  members.insert({
    "shadeAsync",
      _Magick_Image_templ::InstanceMethod("shadeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_shadeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shade");
  members.insert({
    "shade",
      _Magick_Image_templ::InstanceMethod("shade",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_shade,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shadowAsync");
  members.insert({
    "shadowAsync",
      _Magick_Image_templ::InstanceMethod("shadowAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_shadowAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shadow");
  members.insert({
    "shadow",
      _Magick_Image_templ::InstanceMethod("shadow",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_shadow,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sharpenAsync");
  members.insert({
    "sharpenAsync",
      _Magick_Image_templ::InstanceMethod("sharpenAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sharpenAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sharpen");
  members.insert({
    "sharpen",
      _Magick_Image_templ::InstanceMethod("sharpen",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sharpen,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sharpenChannelAsync");
  members.insert({
    "sharpenChannelAsync",
      _Magick_Image_templ::InstanceMethod("sharpenChannelAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sharpenChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sharpenChannel");
  members.insert({
    "sharpenChannel",
      _Magick_Image_templ::InstanceMethod("sharpenChannel",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sharpenChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shaveAsync");
  members.insert({
    "shaveAsync",
      _Magick_Image_templ::InstanceMethod("shaveAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_shaveAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shave");
  members.insert({
    "shave",
      _Magick_Image_templ::InstanceMethod("shave",
        &_Magick_Image_templ::_wrap_Magick_Image_shave,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shearAsync");
  members.insert({
    "shearAsync",
      _Magick_Image_templ::InstanceMethod("shearAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_shearAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shear");
  members.insert({
    "shear",
      _Magick_Image_templ::InstanceMethod("shear",
        &_Magick_Image_templ::_wrap_Magick_Image_shear,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sigmoidalContrastAsync");
  members.insert({
    "sigmoidalContrastAsync",
      _Magick_Image_templ::InstanceMethod("sigmoidalContrastAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sigmoidalContrastAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sigmoidalContrast");
  members.insert({
    "sigmoidalContrast",
      _Magick_Image_templ::InstanceMethod("sigmoidalContrast",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sigmoidalContrast,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("signatureAsync");
  members.insert({
    "signatureAsync",
      _Magick_Image_templ::InstanceMethod("signatureAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_signatureAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("signature");
  members.insert({
    "signature",
      _Magick_Image_templ::InstanceMethod("signature",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_signature,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sketchAsync");
  members.insert({
    "sketchAsync",
      _Magick_Image_templ::InstanceMethod("sketchAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sketchAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sketch");
  members.insert({
    "sketch",
      _Magick_Image_templ::InstanceMethod("sketch",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_sketch,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("solarizeAsync");
  members.insert({
    "solarizeAsync",
      _Magick_Image_templ::InstanceMethod("solarizeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_solarizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("solarize");
  members.insert({
    "solarize",
      _Magick_Image_templ::InstanceMethod("solarize",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_solarize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sparseColorAsync");
  members.insert({
    "sparseColorAsync",
      _Magick_Image_templ::InstanceMethod("sparseColorAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_sparseColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("sparseColor");
  members.insert({
    "sparseColor",
      _Magick_Image_templ::InstanceMethod("sparseColor",
        &_Magick_Image_templ::_wrap_Magick_Image_sparseColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("spliceAsync");
  members.insert({
    "spliceAsync",
      _Magick_Image_templ::InstanceMethod("spliceAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_spliceAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("splice");
  members.insert({
    "splice",
      _Magick_Image_templ::InstanceMethod("splice",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_splice,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("spreadAsync");
  members.insert({
    "spreadAsync",
      _Magick_Image_templ::InstanceMethod("spreadAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_spreadAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("spread");
  members.insert({
    "spread",
      _Magick_Image_templ::InstanceMethod("spread",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_spread,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("statisticsAsync");
  members.insert({
    "statisticsAsync",
      _Magick_Image_templ::InstanceMethod("statisticsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_statisticsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("statistics");
  members.insert({
    "statistics",
      _Magick_Image_templ::InstanceMethod("statistics",
        &_Magick_Image_templ::_wrap_Magick_Image_statistics,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("steganoAsync");
  members.insert({
    "steganoAsync",
      _Magick_Image_templ::InstanceMethod("steganoAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_steganoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("stegano");
  members.insert({
    "stegano",
      _Magick_Image_templ::InstanceMethod("stegano",
        &_Magick_Image_templ::_wrap_Magick_Image_stegano,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("stereoAsync");
  members.insert({
    "stereoAsync",
      _Magick_Image_templ::InstanceMethod("stereoAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_stereoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("stereo");
  members.insert({
    "stereo",
      _Magick_Image_templ::InstanceMethod("stereo",
        &_Magick_Image_templ::_wrap_Magick_Image_stereo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("stripAsync");
  members.insert({
    "stripAsync",
      _Magick_Image_templ::InstanceMethod("stripAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_stripAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strip");
  members.insert({
    "strip",
      _Magick_Image_templ::InstanceMethod("strip",
        &_Magick_Image_templ::_wrap_Magick_Image_strip,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("subImageSearchAsync");
  members.insert({
    "subImageSearchAsync",
      _Magick_Image_templ::InstanceMethod("subImageSearchAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_subImageSearchAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("subImageSearch");
  members.insert({
    "subImageSearch",
      _Magick_Image_templ::InstanceMethod("subImageSearch",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_subImageSearch,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("swirlAsync");
  members.insert({
    "swirlAsync",
      _Magick_Image_templ::InstanceMethod("swirlAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_swirlAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("swirl");
  members.insert({
    "swirl",
      _Magick_Image_templ::InstanceMethod("swirl",
        &_Magick_Image_templ::_wrap_Magick_Image_swirl,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("syncPixelsAsync");
  members.insert({
    "syncPixelsAsync",
      _Magick_Image_templ::InstanceMethod("syncPixelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_syncPixelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("syncPixels");
  members.insert({
    "syncPixels",
      _Magick_Image_templ::InstanceMethod("syncPixels",
        &_Magick_Image_templ::_wrap_Magick_Image_syncPixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textureAsync");
  members.insert({
    "textureAsync",
      _Magick_Image_templ::InstanceMethod("textureAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_textureAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("texture");
  members.insert({
    "texture",
      _Magick_Image_templ::InstanceMethod("texture",
        &_Magick_Image_templ::_wrap_Magick_Image_texture,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("thresholdAsync");
  members.insert({
    "thresholdAsync",
      _Magick_Image_templ::InstanceMethod("thresholdAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_thresholdAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("threshold");
  members.insert({
    "threshold",
      _Magick_Image_templ::InstanceMethod("threshold",
        &_Magick_Image_templ::_wrap_Magick_Image_threshold,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("thumbnailAsync");
  members.insert({
    "thumbnailAsync",
      _Magick_Image_templ::InstanceMethod("thumbnailAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_thumbnailAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("thumbnail");
  members.insert({
    "thumbnail",
      _Magick_Image_templ::InstanceMethod("thumbnail",
        &_Magick_Image_templ::_wrap_Magick_Image_thumbnail,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("tintAsync");
  members.insert({
    "tintAsync",
      _Magick_Image_templ::InstanceMethod("tintAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_tintAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("tint");
  members.insert({
    "tint",
      _Magick_Image_templ::InstanceMethod("tint",
        &_Magick_Image_templ::_wrap_Magick_Image_tint,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformOriginAsync");
  members.insert({
    "transformOriginAsync",
      _Magick_Image_templ::InstanceMethod("transformOriginAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transformOriginAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformOrigin");
  members.insert({
    "transformOrigin",
      _Magick_Image_templ::InstanceMethod("transformOrigin",
        &_Magick_Image_templ::_wrap_Magick_Image_transformOrigin,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformResetAsync");
  members.insert({
    "transformResetAsync",
      _Magick_Image_templ::InstanceMethod("transformResetAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transformResetAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformReset");
  members.insert({
    "transformReset",
      _Magick_Image_templ::InstanceMethod("transformReset",
        &_Magick_Image_templ::_wrap_Magick_Image_transformReset,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformScaleAsync");
  members.insert({
    "transformScaleAsync",
      _Magick_Image_templ::InstanceMethod("transformScaleAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transformScaleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transformScale");
  members.insert({
    "transformScale",
      _Magick_Image_templ::InstanceMethod("transformScale",
        &_Magick_Image_templ::_wrap_Magick_Image_transformScale,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparentAsync");
  members.insert({
    "transparentAsync",
      _Magick_Image_templ::InstanceMethod("transparentAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_transparentAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparent");
  members.insert({
    "transparent",
      _Magick_Image_templ::InstanceMethod("transparent",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_transparent,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparentChromaAsync");
  members.insert({
    "transparentChromaAsync",
      _Magick_Image_templ::InstanceMethod("transparentChromaAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transparentChromaAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparentChroma");
  members.insert({
    "transparentChroma",
      _Magick_Image_templ::InstanceMethod("transparentChroma",
        &_Magick_Image_templ::_wrap_Magick_Image_transparentChroma,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transposeAsync");
  members.insert({
    "transposeAsync",
      _Magick_Image_templ::InstanceMethod("transposeAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transposeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transpose");
  members.insert({
    "transpose",
      _Magick_Image_templ::InstanceMethod("transpose",
        &_Magick_Image_templ::_wrap_Magick_Image_transpose,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transverseAsync");
  members.insert({
    "transverseAsync",
      _Magick_Image_templ::InstanceMethod("transverseAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_transverseAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transverse");
  members.insert({
    "transverse",
      _Magick_Image_templ::InstanceMethod("transverse",
        &_Magick_Image_templ::_wrap_Magick_Image_transverse,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("trimAsync");
  members.insert({
    "trimAsync",
      _Magick_Image_templ::InstanceMethod("trimAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_trimAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("trim");
  members.insert({
    "trim",
      _Magick_Image_templ::InstanceMethod("trim",
        &_Magick_Image_templ::_wrap_Magick_Image_trim,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("uniqueColorsAsync");
  members.insert({
    "uniqueColorsAsync",
      _Magick_Image_templ::InstanceMethod("uniqueColorsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_uniqueColorsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("uniqueColors");
  members.insert({
    "uniqueColors",
      _Magick_Image_templ::InstanceMethod("uniqueColors",
        &_Magick_Image_templ::_wrap_Magick_Image_uniqueColors,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("unsharpmaskAsync");
  members.insert({
    "unsharpmaskAsync",
      _Magick_Image_templ::InstanceMethod("unsharpmaskAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_unsharpmaskAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("unsharpmask");
  members.insert({
    "unsharpmask",
      _Magick_Image_templ::InstanceMethod("unsharpmask",
        &_Magick_Image_templ::_wrap_Magick_Image_unsharpmask,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("unsharpmaskChannelAsync");
  members.insert({
    "unsharpmaskChannelAsync",
      _Magick_Image_templ::InstanceMethod("unsharpmaskChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_unsharpmaskChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("unsharpmaskChannel");
  members.insert({
    "unsharpmaskChannel",
      _Magick_Image_templ::InstanceMethod("unsharpmaskChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_unsharpmaskChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("vignetteAsync");
  members.insert({
    "vignetteAsync",
      _Magick_Image_templ::InstanceMethod("vignetteAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_vignetteAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("vignette");
  members.insert({
    "vignette",
      _Magick_Image_templ::InstanceMethod("vignette",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_vignette,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("waveAsync");
  members.insert({
    "waveAsync",
      _Magick_Image_templ::InstanceMethod("waveAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_waveAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("wave");
  members.insert({
    "wave",
      _Magick_Image_templ::InstanceMethod("wave",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_wave,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("waveletDenoiseAsync");
  members.insert({
    "waveletDenoiseAsync",
      _Magick_Image_templ::InstanceMethod("waveletDenoiseAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_waveletDenoiseAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("waveletDenoise");
  members.insert({
    "waveletDenoise",
      _Magick_Image_templ::InstanceMethod("waveletDenoise",
        &_Magick_Image_templ::_wrap_Magick_Image_waveletDenoise,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("whiteThresholdAsync");
  members.insert({
    "whiteThresholdAsync",
      _Magick_Image_templ::InstanceMethod("whiteThresholdAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_whiteThresholdAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("whiteThreshold");
  members.insert({
    "whiteThreshold",
      _Magick_Image_templ::InstanceMethod("whiteThreshold",
        &_Magick_Image_templ::_wrap_Magick_Image_whiteThreshold,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("whiteThresholdChannelAsync");
  members.insert({
    "whiteThresholdChannelAsync",
      _Magick_Image_templ::InstanceMethod("whiteThresholdChannelAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_whiteThresholdChannelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("whiteThresholdChannel");
  members.insert({
    "whiteThresholdChannel",
      _Magick_Image_templ::InstanceMethod("whiteThresholdChannel",
        &_Magick_Image_templ::_wrap_Magick_Image_whiteThresholdChannel,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("writeAsync");
  members.insert({
    "writeAsync",
      _Magick_Image_templ::InstanceMethod("writeAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_writeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("write");
  members.insert({
    "write",
      _Magick_Image_templ::InstanceMethod("write",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_write,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("writeMaskAsync");
  members.insert({
    "writeMaskAsync",
      _Magick_Image_templ::InstanceMethod("writeMaskAsync",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_writeMaskAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("writeMask");
  members.insert({
    "writeMask",
      _Magick_Image_templ::InstanceMethod("writeMask",
        &_Magick_Image_templ::_wrap_Image__wrap_Magick_Image_writeMask,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("writePixelsAsync");
  members.insert({
    "writePixelsAsync",
      _Magick_Image_templ::InstanceMethod("writePixelsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_writePixelsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("writePixels");
  members.insert({
    "writePixels",
      _Magick_Image_templ::InstanceMethod("writePixels",
        &_Magick_Image_templ::_wrap_Magick_Image_writePixels,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("zoomAsync");
  members.insert({
    "zoomAsync",
      _Magick_Image_templ::InstanceMethod("zoomAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_zoomAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("zoom");
  members.insert({
    "zoom",
      _Magick_Image_templ::InstanceMethod("zoom",
        &_Magick_Image_templ::_wrap_Magick_Image_zoom,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("imageAsync");
  members.insert({
    "imageAsync",
      _Magick_Image_templ::InstanceMethod("imageAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_imageAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("image");
  members.insert({
    "image",
      _Magick_Image_templ::InstanceMethod("image",
        &_Magick_Image_templ::_wrap_Magick_Image_image,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constImageAsync");
  members.insert({
    "constImageAsync",
      _Magick_Image_templ::InstanceMethod("constImageAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_constImageAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constImage");
  members.insert({
    "constImage",
      _Magick_Image_templ::InstanceMethod("constImage",
        &_Magick_Image_templ::_wrap_Magick_Image_constImage,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("imageInfoAsync");
  members.insert({
    "imageInfoAsync",
      _Magick_Image_templ::InstanceMethod("imageInfoAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_imageInfoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("imageInfo");
  members.insert({
    "imageInfo",
      _Magick_Image_templ::InstanceMethod("imageInfo",
        &_Magick_Image_templ::_wrap_Magick_Image_imageInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constImageInfoAsync");
  members.insert({
    "constImageInfoAsync",
      _Magick_Image_templ::InstanceMethod("constImageInfoAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_constImageInfoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constImageInfo");
  members.insert({
    "constImageInfo",
      _Magick_Image_templ::InstanceMethod("constImageInfo",
        &_Magick_Image_templ::_wrap_Magick_Image_constImageInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("optionsAsync");
  members.insert({
    "optionsAsync",
      _Magick_Image_templ::InstanceMethod("optionsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_optionsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("options");
  members.insert({
    "options",
      _Magick_Image_templ::InstanceMethod("options",
        &_Magick_Image_templ::_wrap_Magick_Image_options,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constOptionsAsync");
  members.insert({
    "constOptionsAsync",
      _Magick_Image_templ::InstanceMethod("constOptionsAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_constOptionsAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constOptions");
  members.insert({
    "constOptions",
      _Magick_Image_templ::InstanceMethod("constOptions",
        &_Magick_Image_templ::_wrap_Magick_Image_constOptions,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeInfoAsync");
  members.insert({
    "quantizeInfoAsync",
      _Magick_Image_templ::InstanceMethod("quantizeInfoAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_quantizeInfoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quantizeInfo");
  members.insert({
    "quantizeInfo",
      _Magick_Image_templ::InstanceMethod("quantizeInfo",
        &_Magick_Image_templ::_wrap_Magick_Image_quantizeInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constQuantizeInfoAsync");
  members.insert({
    "constQuantizeInfoAsync",
      _Magick_Image_templ::InstanceMethod("constQuantizeInfoAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_constQuantizeInfoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("constQuantizeInfo");
  members.insert({
    "constQuantizeInfo",
      _Magick_Image_templ::InstanceMethod("constQuantizeInfo",
        &_Magick_Image_templ::_wrap_Magick_Image_constQuantizeInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("modifyImageAsync");
  members.insert({
    "modifyImageAsync",
      _Magick_Image_templ::InstanceMethod("modifyImageAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_modifyImageAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("modifyImage");
  members.insert({
    "modifyImage",
      _Magick_Image_templ::InstanceMethod("modifyImage",
        &_Magick_Image_templ::_wrap_Magick_Image_modifyImage,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("replaceImageAsync");
  members.insert({
    "replaceImageAsync",
      _Magick_Image_templ::InstanceMethod("replaceImageAsync",
        &_Magick_Image_templ::_wrap_Magick_Image_replaceImageAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("replaceImage");
  members.insert({
    "replaceImage",
      _Magick_Image_templ::InstanceMethod("replaceImage",
        &_Magick_Image_templ::_wrap_Magick_Image_replaceImage,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ResourceLimits_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ResourceLimits_templ(const Napi::CallbackInfo &);
_Magick_ResourceLimits_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_area__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_area__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_area(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_disk__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_disk__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_disk(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_file__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_file__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_file(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_height__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_height__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_height(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_listLength__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_listLength__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_listLength(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_map__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_map__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_map(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_memory__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_memory__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_memory(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_thread__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_thread__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_thread(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_throttle__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_throttle__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_throttle(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_width__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_Magick_ResourceLimits_width__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value _wrap_ResourceLimits__wrap_Magick_ResourceLimits_width(const Napi::CallbackInfo &);
virtual ~_Magick_ResourceLimits_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ResourceLimits_inst : public _Magick_ResourceLimits_templ<_Magick_ResourceLimits_inst> {
public:
  using _Magick_ResourceLimits_templ::_Magick_ResourceLimits_templ;
  virtual ~_Magick_ResourceLimits_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ResourceLimits_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ResourceLimits_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ResourceLimits (_Magick_ResourceLimits) */
// jsnapi_getclass
Napi::Function _Magick_ResourceLimits_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ResourceLimits_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ResourceLimits_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ResourceLimits_inst>::DefineClass(env, "ResourceLimits", symbolTable);
}

void _Magick_ResourceLimits_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ResourceLimits_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ResourceLimits_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  
  /* add static class functions and variables */
  // jsnapi_register_static_function
  staticMembers.erase("area");
  staticMembers.insert({
    "area",
      StaticMethod("area",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_area,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("disk");
  staticMembers.insert({
    "disk",
      StaticMethod("disk",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_disk,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("file");
  staticMembers.insert({
    "file",
      StaticMethod("file",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_file,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("height");
  staticMembers.insert({
    "height",
      StaticMethod("height",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_height,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("listLength");
  staticMembers.insert({
    "listLength",
      StaticMethod("listLength",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_listLength,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("map");
  staticMembers.insert({
    "map",
      StaticMethod("map",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_map,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("memory");
  staticMembers.insert({
    "memory",
      StaticMethod("memory",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_memory,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("thread");
  staticMembers.insert({
    "thread",
      StaticMethod("thread",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_thread,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("throttle");
  staticMembers.insert({
    "throttle",
      StaticMethod("throttle",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_throttle,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_static_function
  staticMembers.erase("width");
  staticMembers.insert({
    "width",
      StaticMethod("width",
        &_Magick_ResourceLimits_templ::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_width,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_CoderInfo_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_CoderInfo_templ(const Napi::CallbackInfo &);
_Magick_CoderInfo_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value Magick_CoderInfo_AnyMatch_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value Magick_CoderInfo_TrueMatch_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
static Napi::Value Magick_CoderInfo_FalseMatch_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_CoderInfo__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_CoderInfo__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_CoderInfo__SWIG_2(const Napi::CallbackInfo &);
virtual ~_Magick_CoderInfo_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_clone(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_canReadMultithreaded(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_canWriteMultithreaded(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_description(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_isMultiFrame(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_isReadable(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_isWritable(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_mimeType(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_module(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_name(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_CoderInfo_unregister(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_CoderInfo_inst : public _Magick_CoderInfo_templ<_Magick_CoderInfo_inst> {
public:
  using _Magick_CoderInfo_templ::_Magick_CoderInfo_templ;
  virtual ~_Magick_CoderInfo_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_CoderInfo_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_CoderInfo_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: CoderInfo (_Magick_CoderInfo) */
// jsnapi_getclass
Napi::Function _Magick_CoderInfo_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_CoderInfo_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_CoderInfo_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_CoderInfo_inst>::DefineClass(env, "CoderInfo", symbolTable);
}

void _Magick_CoderInfo_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_CoderInfo_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_CoderInfo_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("clone");
  members.insert({
    "clone",
      _Magick_CoderInfo_templ::InstanceMethod("clone",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_clone,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("canReadMultithreaded");
  members.insert({
    "canReadMultithreaded",
      _Magick_CoderInfo_templ::InstanceMethod("canReadMultithreaded",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_canReadMultithreaded,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("canWriteMultithreaded");
  members.insert({
    "canWriteMultithreaded",
      _Magick_CoderInfo_templ::InstanceMethod("canWriteMultithreaded",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_canWriteMultithreaded,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("description");
  members.insert({
    "description",
      _Magick_CoderInfo_templ::InstanceMethod("description",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_description,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isMultiFrame");
  members.insert({
    "isMultiFrame",
      _Magick_CoderInfo_templ::InstanceMethod("isMultiFrame",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_isMultiFrame,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isReadable");
  members.insert({
    "isReadable",
      _Magick_CoderInfo_templ::InstanceMethod("isReadable",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_isReadable,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isWritable");
  members.insert({
    "isWritable",
      _Magick_CoderInfo_templ::InstanceMethod("isWritable",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_isWritable,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("mimeType");
  members.insert({
    "mimeType",
      _Magick_CoderInfo_templ::InstanceMethod("mimeType",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_mimeType,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("module");
  members.insert({
    "module",
      _Magick_CoderInfo_templ::InstanceMethod("module",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_module,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("name");
  members.insert({
    "name",
      _Magick_CoderInfo_templ::InstanceMethod("name",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_name,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("unregister");
  members.insert({
    "unregister",
      _Magick_CoderInfo_templ::InstanceMethod("unregister",
        &_Magick_CoderInfo_templ::_wrap_Magick_CoderInfo_unregister,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_CoderInfo_AnyMatch_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("AnyMatch");
    staticMembers.insert({
      "AnyMatch", StaticValue("AnyMatch", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_CoderInfo_TrueMatch_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("TrueMatch");
    staticMembers.insert({
      "TrueMatch", StaticValue("TrueMatch", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  // jsnapi_register_static_constant
  do {
    Napi::Function f = Napi::Function::New(env, Magick_CoderInfo_FalseMatch_get);
    Napi::Value value;
    NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
    staticMembers.erase("FalseMatch");
    staticMembers.insert({
      "FalseMatch", StaticValue("FalseMatch", value,
          static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable))
      });
  } while (0);
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_Montage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_Montage_templ(const Napi::CallbackInfo &);
_Magick_Montage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_Montage(const Napi::CallbackInfo &);
virtual ~_Magick_Montage_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_backgroundColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_backgroundColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_backgroundColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_backgroundColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_backgroundColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_backgroundColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fileNameAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fileName__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fileNameAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_fileNameAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fileName__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_fileName(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fillColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fillColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fillColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_fillColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fillColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_fillColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fontAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_font__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_fontAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_fontAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_font__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_font(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_geometryAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_geometry__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_geometryAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_geometryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_geometry__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_geometry(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_gravityAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_gravity__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_gravityAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_gravityAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_gravity__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_gravity(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_labelAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_label__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_labelAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_labelAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_label__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_label(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_pointSizeAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_pointSize__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_pointSizeAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_pointSizeAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_pointSize__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_pointSize(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_shadowAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_shadow__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_shadowAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_shadowAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_shadow__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_shadow(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_strokeColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_strokeColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_strokeColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_strokeColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_strokeColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_strokeColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_textureAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_texture__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_textureAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_textureAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_texture__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_texture(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_tileAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_tile__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_tileAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_tileAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_tile__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_tile(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_titleAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_title__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_titleAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_titleAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_title__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_title(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_transparentColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_transparentColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_transparentColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_transparentColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_transparentColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Montage__wrap_Magick_Montage_transparentColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_updateMontageInfoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_Montage_updateMontageInfo(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_Montage_inst : public _Magick_Montage_templ<_Magick_Montage_inst> {
public:
  using _Magick_Montage_templ::_Magick_Montage_templ;
  virtual ~_Magick_Montage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_Montage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_Montage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: Montage (_Magick_Montage) */
// jsnapi_getclass
Napi::Function _Magick_Montage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_Montage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_Montage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_Montage_inst>::DefineClass(env, "Montage", symbolTable);
}

void _Magick_Montage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_Montage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_Montage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("backgroundColorAsync");
  members.insert({
    "backgroundColorAsync",
      _Magick_Montage_templ::InstanceMethod("backgroundColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_backgroundColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("backgroundColor");
  members.insert({
    "backgroundColor",
      _Magick_Montage_templ::InstanceMethod("backgroundColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_backgroundColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileNameAsync");
  members.insert({
    "fileNameAsync",
      _Magick_Montage_templ::InstanceMethod("fileNameAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fileNameAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileName");
  members.insert({
    "fileName",
      _Magick_Montage_templ::InstanceMethod("fileName",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fileName,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillColorAsync");
  members.insert({
    "fillColorAsync",
      _Magick_Montage_templ::InstanceMethod("fillColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fillColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillColor");
  members.insert({
    "fillColor",
      _Magick_Montage_templ::InstanceMethod("fillColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fillColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontAsync");
  members.insert({
    "fontAsync",
      _Magick_Montage_templ::InstanceMethod("fontAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fontAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("font");
  members.insert({
    "font",
      _Magick_Montage_templ::InstanceMethod("font",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_font,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("geometryAsync");
  members.insert({
    "geometryAsync",
      _Magick_Montage_templ::InstanceMethod("geometryAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_geometryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("geometry");
  members.insert({
    "geometry",
      _Magick_Montage_templ::InstanceMethod("geometry",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_geometry,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gravityAsync");
  members.insert({
    "gravityAsync",
      _Magick_Montage_templ::InstanceMethod("gravityAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_gravityAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gravity");
  members.insert({
    "gravity",
      _Magick_Montage_templ::InstanceMethod("gravity",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_gravity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("labelAsync");
  members.insert({
    "labelAsync",
      _Magick_Montage_templ::InstanceMethod("labelAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_labelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("label");
  members.insert({
    "label",
      _Magick_Montage_templ::InstanceMethod("label",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_label,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pointSizeAsync");
  members.insert({
    "pointSizeAsync",
      _Magick_Montage_templ::InstanceMethod("pointSizeAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_pointSizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pointSize");
  members.insert({
    "pointSize",
      _Magick_Montage_templ::InstanceMethod("pointSize",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_pointSize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shadowAsync");
  members.insert({
    "shadowAsync",
      _Magick_Montage_templ::InstanceMethod("shadowAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_shadowAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shadow");
  members.insert({
    "shadow",
      _Magick_Montage_templ::InstanceMethod("shadow",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_shadow,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeColorAsync");
  members.insert({
    "strokeColorAsync",
      _Magick_Montage_templ::InstanceMethod("strokeColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_strokeColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeColor");
  members.insert({
    "strokeColor",
      _Magick_Montage_templ::InstanceMethod("strokeColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_strokeColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textureAsync");
  members.insert({
    "textureAsync",
      _Magick_Montage_templ::InstanceMethod("textureAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_textureAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("texture");
  members.insert({
    "texture",
      _Magick_Montage_templ::InstanceMethod("texture",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_texture,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("tileAsync");
  members.insert({
    "tileAsync",
      _Magick_Montage_templ::InstanceMethod("tileAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_tileAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("tile");
  members.insert({
    "tile",
      _Magick_Montage_templ::InstanceMethod("tile",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_tile,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("titleAsync");
  members.insert({
    "titleAsync",
      _Magick_Montage_templ::InstanceMethod("titleAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_titleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("title");
  members.insert({
    "title",
      _Magick_Montage_templ::InstanceMethod("title",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_title,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparentColorAsync");
  members.insert({
    "transparentColorAsync",
      _Magick_Montage_templ::InstanceMethod("transparentColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_transparentColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparentColor");
  members.insert({
    "transparentColor",
      _Magick_Montage_templ::InstanceMethod("transparentColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_transparentColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("updateMontageInfoAsync");
  members.insert({
    "updateMontageInfoAsync",
      _Magick_Montage_templ::InstanceMethod("updateMontageInfoAsync",
        &_Magick_Montage_templ::_wrap_Magick_Montage_updateMontageInfoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("updateMontageInfo");
  members.insert({
    "updateMontageInfo",
      _Magick_Montage_templ::InstanceMethod("updateMontageInfo",
        &_Magick_Montage_templ::_wrap_Magick_Montage_updateMontageInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_MontageFramed_templ : public _Magick_Montage_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_MontageFramed_templ(const Napi::CallbackInfo &);
_Magick_MontageFramed_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_MontageFramed(const Napi::CallbackInfo &);
virtual ~_Magick_MontageFramed_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_matteColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_matteColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_matteColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_matteColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_matteColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderColorAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderColor__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderColorAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderColor__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_borderColor(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderWidth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_borderWidth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_borderWidth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_frameGeometry__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_frameGeometry__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_MontageFramed__wrap_Magick_MontageFramed_frameGeometry(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_updateMontageInfoAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_MontageFramed_updateMontageInfo(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_MontageFramed_inst : public _Magick_MontageFramed_templ<_Magick_MontageFramed_inst> {
public:
  using _Magick_MontageFramed_templ::_Magick_MontageFramed_templ;
  virtual ~_Magick_MontageFramed_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_MontageFramed_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_MontageFramed_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: MontageFramed (_Magick_MontageFramed) */
// jsnapi_getclass
Napi::Function _Magick_MontageFramed_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_MontageFramed_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_MontageFramed_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_MontageFramed_inst>::DefineClass(env, "MontageFramed", symbolTable);
}

void _Magick_MontageFramed_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_MontageFramed_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_MontageFramed_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, _Magick_Montage_templ<_Magick_Montage_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  _Magick_Montage_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("backgroundColorAsync");
  members.insert({
    "backgroundColorAsync",
      _Magick_Montage_templ::InstanceMethod("backgroundColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_backgroundColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("backgroundColor");
  members.insert({
    "backgroundColor",
      _Magick_Montage_templ::InstanceMethod("backgroundColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_backgroundColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileNameAsync");
  members.insert({
    "fileNameAsync",
      _Magick_Montage_templ::InstanceMethod("fileNameAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fileNameAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fileName");
  members.insert({
    "fileName",
      _Magick_Montage_templ::InstanceMethod("fileName",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fileName,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillColorAsync");
  members.insert({
    "fillColorAsync",
      _Magick_Montage_templ::InstanceMethod("fillColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fillColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fillColor");
  members.insert({
    "fillColor",
      _Magick_Montage_templ::InstanceMethod("fillColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fillColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("fontAsync");
  members.insert({
    "fontAsync",
      _Magick_Montage_templ::InstanceMethod("fontAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_fontAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("font");
  members.insert({
    "font",
      _Magick_Montage_templ::InstanceMethod("font",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_font,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("geometryAsync");
  members.insert({
    "geometryAsync",
      _Magick_Montage_templ::InstanceMethod("geometryAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_geometryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("geometry");
  members.insert({
    "geometry",
      _Magick_Montage_templ::InstanceMethod("geometry",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_geometry,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gravityAsync");
  members.insert({
    "gravityAsync",
      _Magick_Montage_templ::InstanceMethod("gravityAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_gravityAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("gravity");
  members.insert({
    "gravity",
      _Magick_Montage_templ::InstanceMethod("gravity",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_gravity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("labelAsync");
  members.insert({
    "labelAsync",
      _Magick_Montage_templ::InstanceMethod("labelAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_labelAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("label");
  members.insert({
    "label",
      _Magick_Montage_templ::InstanceMethod("label",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_label,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pointSizeAsync");
  members.insert({
    "pointSizeAsync",
      _Magick_Montage_templ::InstanceMethod("pointSizeAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_pointSizeAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("pointSize");
  members.insert({
    "pointSize",
      _Magick_Montage_templ::InstanceMethod("pointSize",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_pointSize,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shadowAsync");
  members.insert({
    "shadowAsync",
      _Magick_Montage_templ::InstanceMethod("shadowAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_shadowAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("shadow");
  members.insert({
    "shadow",
      _Magick_Montage_templ::InstanceMethod("shadow",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_shadow,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeColorAsync");
  members.insert({
    "strokeColorAsync",
      _Magick_Montage_templ::InstanceMethod("strokeColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_strokeColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("strokeColor");
  members.insert({
    "strokeColor",
      _Magick_Montage_templ::InstanceMethod("strokeColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_strokeColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("textureAsync");
  members.insert({
    "textureAsync",
      _Magick_Montage_templ::InstanceMethod("textureAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_textureAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("texture");
  members.insert({
    "texture",
      _Magick_Montage_templ::InstanceMethod("texture",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_texture,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("tileAsync");
  members.insert({
    "tileAsync",
      _Magick_Montage_templ::InstanceMethod("tileAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_tileAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("tile");
  members.insert({
    "tile",
      _Magick_Montage_templ::InstanceMethod("tile",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_tile,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("titleAsync");
  members.insert({
    "titleAsync",
      _Magick_Montage_templ::InstanceMethod("titleAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_titleAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("title");
  members.insert({
    "title",
      _Magick_Montage_templ::InstanceMethod("title",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_title,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparentColorAsync");
  members.insert({
    "transparentColorAsync",
      _Magick_Montage_templ::InstanceMethod("transparentColorAsync",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_transparentColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("transparentColor");
  members.insert({
    "transparentColor",
      _Magick_Montage_templ::InstanceMethod("transparentColor",
        &_Magick_Montage_templ::_wrap_Montage__wrap_Magick_Montage_transparentColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("updateMontageInfoAsync");
  members.insert({
    "updateMontageInfoAsync",
      _Magick_Montage_templ::InstanceMethod("updateMontageInfoAsync",
        &_Magick_Montage_templ::_wrap_Magick_Montage_updateMontageInfoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("updateMontageInfo");
  members.insert({
    "updateMontageInfo",
      _Magick_Montage_templ::InstanceMethod("updateMontageInfo",
        &_Magick_Montage_templ::_wrap_Magick_Montage_updateMontageInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("matteColorAsync");
  members.insert({
    "matteColorAsync",
      _Magick_MontageFramed_templ::InstanceMethod("matteColorAsync",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("matteColor");
  members.insert({
    "matteColor",
      _Magick_MontageFramed_templ::InstanceMethod("matteColor",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_matteColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("borderColorAsync");
  members.insert({
    "borderColorAsync",
      _Magick_MontageFramed_templ::InstanceMethod("borderColorAsync",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("borderColor");
  members.insert({
    "borderColor",
      _Magick_MontageFramed_templ::InstanceMethod("borderColor",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderColor,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("borderWidthAsync");
  members.insert({
    "borderWidthAsync",
      _Magick_MontageFramed_templ::InstanceMethod("borderWidthAsync",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("borderWidth");
  members.insert({
    "borderWidth",
      _Magick_MontageFramed_templ::InstanceMethod("borderWidth",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderWidth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("frameGeometryAsync");
  members.insert({
    "frameGeometryAsync",
      _Magick_MontageFramed_templ::InstanceMethod("frameGeometryAsync",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("frameGeometry");
  members.insert({
    "frameGeometry",
      _Magick_MontageFramed_templ::InstanceMethod("frameGeometry",
        &_Magick_MontageFramed_templ::_wrap_MontageFramed__wrap_Magick_MontageFramed_frameGeometry,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("updateMontageInfoAsync");
  members.insert({
    "updateMontageInfoAsync",
      _Magick_MontageFramed_templ::InstanceMethod("updateMontageInfoAsync",
        &_Magick_MontageFramed_templ::_wrap_Magick_MontageFramed_updateMontageInfoAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("updateMontageInfo");
  members.insert({
    "updateMontageInfo",
      _Magick_MontageFramed_templ::InstanceMethod("updateMontageInfo",
        &_Magick_MontageFramed_templ::_wrap_Magick_MontageFramed_updateMontageInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_adaptiveBlurImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_adaptiveBlurImage_templ(const Napi::CallbackInfo &);
_Magick_adaptiveBlurImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_adaptiveBlurImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_adaptiveBlurImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_adaptiveBlurImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_adaptiveBlurImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_adaptiveBlurImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_adaptiveBlurImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_adaptiveBlurImage_inst : public _Magick_adaptiveBlurImage_templ<_Magick_adaptiveBlurImage_inst> {
public:
  using _Magick_adaptiveBlurImage_templ::_Magick_adaptiveBlurImage_templ;
  virtual ~_Magick_adaptiveBlurImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_adaptiveBlurImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_adaptiveBlurImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: adaptiveBlurImage (_Magick_adaptiveBlurImage) */
// jsnapi_getclass
Napi::Function _Magick_adaptiveBlurImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_adaptiveBlurImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_adaptiveBlurImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_adaptiveBlurImage_inst>::DefineClass(env, "adaptiveBlurImage", symbolTable);
}

void _Magick_adaptiveBlurImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_adaptiveBlurImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_adaptiveBlurImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_adaptiveBlurImage_templ::InstanceMethod("callAsync",
        &_Magick_adaptiveBlurImage_templ::_wrap_Magick_adaptiveBlurImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_adaptiveBlurImage_templ::InstanceMethod("call",
        &_Magick_adaptiveBlurImage_templ::_wrap_Magick_adaptiveBlurImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_adaptiveThresholdImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_adaptiveThresholdImage_templ(const Napi::CallbackInfo &);
_Magick_adaptiveThresholdImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_adaptiveThresholdImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_adaptiveThresholdImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_adaptiveThresholdImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_adaptiveThresholdImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_adaptiveThresholdImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_adaptiveThresholdImage_inst : public _Magick_adaptiveThresholdImage_templ<_Magick_adaptiveThresholdImage_inst> {
public:
  using _Magick_adaptiveThresholdImage_templ::_Magick_adaptiveThresholdImage_templ;
  virtual ~_Magick_adaptiveThresholdImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_adaptiveThresholdImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_adaptiveThresholdImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: adaptiveThresholdImage (_Magick_adaptiveThresholdImage) */
// jsnapi_getclass
Napi::Function _Magick_adaptiveThresholdImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_adaptiveThresholdImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_adaptiveThresholdImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_adaptiveThresholdImage_inst>::DefineClass(env, "adaptiveThresholdImage", symbolTable);
}

void _Magick_adaptiveThresholdImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_adaptiveThresholdImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_adaptiveThresholdImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_adaptiveThresholdImage_templ::InstanceMethod("callAsync",
        &_Magick_adaptiveThresholdImage_templ::_wrap_Magick_adaptiveThresholdImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_adaptiveThresholdImage_templ::InstanceMethod("call",
        &_Magick_adaptiveThresholdImage_templ::_wrap_Magick_adaptiveThresholdImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_addNoiseImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_addNoiseImage_templ(const Napi::CallbackInfo &);
_Magick_addNoiseImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_addNoiseImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_addNoiseImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_addNoiseImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_addNoiseImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_addNoiseImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_addNoiseImage_inst : public _Magick_addNoiseImage_templ<_Magick_addNoiseImage_inst> {
public:
  using _Magick_addNoiseImage_templ::_Magick_addNoiseImage_templ;
  virtual ~_Magick_addNoiseImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_addNoiseImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_addNoiseImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: addNoiseImage (_Magick_addNoiseImage) */
// jsnapi_getclass
Napi::Function _Magick_addNoiseImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_addNoiseImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_addNoiseImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_addNoiseImage_inst>::DefineClass(env, "addNoiseImage", symbolTable);
}

void _Magick_addNoiseImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_addNoiseImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_addNoiseImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_addNoiseImage_templ::InstanceMethod("callAsync",
        &_Magick_addNoiseImage_templ::_wrap_Magick_addNoiseImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_addNoiseImage_templ::InstanceMethod("call",
        &_Magick_addNoiseImage_templ::_wrap_Magick_addNoiseImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_affineTransformImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_affineTransformImage_templ(const Napi::CallbackInfo &);
_Magick_affineTransformImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_affineTransformImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_affineTransformImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_affineTransformImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_affineTransformImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_affineTransformImage_inst : public _Magick_affineTransformImage_templ<_Magick_affineTransformImage_inst> {
public:
  using _Magick_affineTransformImage_templ::_Magick_affineTransformImage_templ;
  virtual ~_Magick_affineTransformImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_affineTransformImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_affineTransformImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: affineTransformImage (_Magick_affineTransformImage) */
// jsnapi_getclass
Napi::Function _Magick_affineTransformImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_affineTransformImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_affineTransformImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_affineTransformImage_inst>::DefineClass(env, "affineTransformImage", symbolTable);
}

void _Magick_affineTransformImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_affineTransformImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_affineTransformImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_affineTransformImage_templ::InstanceMethod("callAsync",
        &_Magick_affineTransformImage_templ::_wrap_Magick_affineTransformImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_affineTransformImage_templ::InstanceMethod("call",
        &_Magick_affineTransformImage_templ::_wrap_Magick_affineTransformImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_annotateImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_annotateImage_templ(const Napi::CallbackInfo &);
_Magick_annotateImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_annotateImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_annotateImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_annotateImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_annotateImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_annotateImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_annotateImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_annotateImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_annotateImage_inst : public _Magick_annotateImage_templ<_Magick_annotateImage_inst> {
public:
  using _Magick_annotateImage_templ::_Magick_annotateImage_templ;
  virtual ~_Magick_annotateImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_annotateImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_annotateImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: annotateImage (_Magick_annotateImage) */
// jsnapi_getclass
Napi::Function _Magick_annotateImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_annotateImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_annotateImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_annotateImage_inst>::DefineClass(env, "annotateImage", symbolTable);
}

void _Magick_annotateImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_annotateImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_annotateImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_annotateImage_templ::InstanceMethod("callAsync",
        &_Magick_annotateImage_templ::_wrap_Magick_annotateImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_annotateImage_templ::InstanceMethod("call",
        &_Magick_annotateImage_templ::_wrap_Magick_annotateImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_blurImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_blurImage_templ(const Napi::CallbackInfo &);
_Magick_blurImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_blurImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_blurImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_blurImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_blurImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_blurImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_blurImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_blurImage_inst : public _Magick_blurImage_templ<_Magick_blurImage_inst> {
public:
  using _Magick_blurImage_templ::_Magick_blurImage_templ;
  virtual ~_Magick_blurImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_blurImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_blurImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: blurImage (_Magick_blurImage) */
// jsnapi_getclass
Napi::Function _Magick_blurImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_blurImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_blurImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_blurImage_inst>::DefineClass(env, "blurImage", symbolTable);
}

void _Magick_blurImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_blurImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_blurImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_blurImage_templ::InstanceMethod("callAsync",
        &_Magick_blurImage_templ::_wrap_Magick_blurImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_blurImage_templ::InstanceMethod("call",
        &_Magick_blurImage_templ::_wrap_Magick_blurImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_borderImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_borderImage_templ(const Napi::CallbackInfo &);
_Magick_borderImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_borderImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_borderImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_borderImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_borderImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_borderImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_borderImage_inst : public _Magick_borderImage_templ<_Magick_borderImage_inst> {
public:
  using _Magick_borderImage_templ::_Magick_borderImage_templ;
  virtual ~_Magick_borderImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_borderImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_borderImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: borderImage (_Magick_borderImage) */
// jsnapi_getclass
Napi::Function _Magick_borderImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_borderImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_borderImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_borderImage_inst>::DefineClass(env, "borderImage", symbolTable);
}

void _Magick_borderImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_borderImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_borderImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_borderImage_templ::InstanceMethod("callAsync",
        &_Magick_borderImage_templ::_wrap_Magick_borderImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_borderImage_templ::InstanceMethod("call",
        &_Magick_borderImage_templ::_wrap_Magick_borderImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_channelImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_channelImage_templ(const Napi::CallbackInfo &);
_Magick_channelImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_channelImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_channelImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_channelImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_channelImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_channelImage_inst : public _Magick_channelImage_templ<_Magick_channelImage_inst> {
public:
  using _Magick_channelImage_templ::_Magick_channelImage_templ;
  virtual ~_Magick_channelImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_channelImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_channelImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: channelImage (_Magick_channelImage) */
// jsnapi_getclass
Napi::Function _Magick_channelImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_channelImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_channelImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_channelImage_inst>::DefineClass(env, "channelImage", symbolTable);
}

void _Magick_channelImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_channelImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_channelImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_channelImage_templ::InstanceMethod("callAsync",
        &_Magick_channelImage_templ::_wrap_Magick_channelImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_channelImage_templ::InstanceMethod("call",
        &_Magick_channelImage_templ::_wrap_Magick_channelImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_charcoalImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_charcoalImage_templ(const Napi::CallbackInfo &);
_Magick_charcoalImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_charcoalImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_charcoalImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_charcoalImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_charcoalImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_charcoalImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_charcoalImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_charcoalImage_inst : public _Magick_charcoalImage_templ<_Magick_charcoalImage_inst> {
public:
  using _Magick_charcoalImage_templ::_Magick_charcoalImage_templ;
  virtual ~_Magick_charcoalImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_charcoalImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_charcoalImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: charcoalImage (_Magick_charcoalImage) */
// jsnapi_getclass
Napi::Function _Magick_charcoalImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_charcoalImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_charcoalImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_charcoalImage_inst>::DefineClass(env, "charcoalImage", symbolTable);
}

void _Magick_charcoalImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_charcoalImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_charcoalImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_charcoalImage_templ::InstanceMethod("callAsync",
        &_Magick_charcoalImage_templ::_wrap_Magick_charcoalImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_charcoalImage_templ::InstanceMethod("call",
        &_Magick_charcoalImage_templ::_wrap_Magick_charcoalImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_chopImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_chopImage_templ(const Napi::CallbackInfo &);
_Magick_chopImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_chopImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chopImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chopImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_chopImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_chopImage_inst : public _Magick_chopImage_templ<_Magick_chopImage_inst> {
public:
  using _Magick_chopImage_templ::_Magick_chopImage_templ;
  virtual ~_Magick_chopImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_chopImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_chopImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: chopImage (_Magick_chopImage) */
// jsnapi_getclass
Napi::Function _Magick_chopImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_chopImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_chopImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_chopImage_inst>::DefineClass(env, "chopImage", symbolTable);
}

void _Magick_chopImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_chopImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_chopImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_chopImage_templ::InstanceMethod("callAsync",
        &_Magick_chopImage_templ::_wrap_Magick_chopImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_chopImage_templ::InstanceMethod("call",
        &_Magick_chopImage_templ::_wrap_Magick_chopImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_cdlImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_cdlImage_templ(const Napi::CallbackInfo &);
_Magick_cdlImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_cdlImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_cdlImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_cdlImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_cdlImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_cdlImage_inst : public _Magick_cdlImage_templ<_Magick_cdlImage_inst> {
public:
  using _Magick_cdlImage_templ::_Magick_cdlImage_templ;
  virtual ~_Magick_cdlImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_cdlImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_cdlImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: cdlImage (_Magick_cdlImage) */
// jsnapi_getclass
Napi::Function _Magick_cdlImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_cdlImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_cdlImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_cdlImage_inst>::DefineClass(env, "cdlImage", symbolTable);
}

void _Magick_cdlImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_cdlImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_cdlImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_cdlImage_templ::InstanceMethod("callAsync",
        &_Magick_cdlImage_templ::_wrap_Magick_cdlImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_cdlImage_templ::InstanceMethod("call",
        &_Magick_cdlImage_templ::_wrap_Magick_cdlImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_colorizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_colorizeImage_templ(const Napi::CallbackInfo &);
_Magick_colorizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_colorizeImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_colorizeImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_colorizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_colorizeImage_inst : public _Magick_colorizeImage_templ<_Magick_colorizeImage_inst> {
public:
  using _Magick_colorizeImage_templ::_Magick_colorizeImage_templ;
  virtual ~_Magick_colorizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_colorizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_colorizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: colorizeImage (_Magick_colorizeImage) */
// jsnapi_getclass
Napi::Function _Magick_colorizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_colorizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_colorizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_colorizeImage_inst>::DefineClass(env, "colorizeImage", symbolTable);
}

void _Magick_colorizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_colorizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_colorizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_colorizeImage_templ::InstanceMethod("callAsync",
        &_Magick_colorizeImage_templ::_wrap_Magick_colorizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_colorizeImage_templ::InstanceMethod("call",
        &_Magick_colorizeImage_templ::_wrap_Magick_colorizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_colorMatrixImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_colorMatrixImage_templ(const Napi::CallbackInfo &);
_Magick_colorMatrixImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_colorMatrixImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorMatrixImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorMatrixImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_colorMatrixImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_colorMatrixImage_inst : public _Magick_colorMatrixImage_templ<_Magick_colorMatrixImage_inst> {
public:
  using _Magick_colorMatrixImage_templ::_Magick_colorMatrixImage_templ;
  virtual ~_Magick_colorMatrixImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_colorMatrixImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_colorMatrixImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: colorMatrixImage (_Magick_colorMatrixImage) */
// jsnapi_getclass
Napi::Function _Magick_colorMatrixImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_colorMatrixImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_colorMatrixImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_colorMatrixImage_inst>::DefineClass(env, "colorMatrixImage", symbolTable);
}

void _Magick_colorMatrixImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_colorMatrixImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_colorMatrixImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_colorMatrixImage_templ::InstanceMethod("callAsync",
        &_Magick_colorMatrixImage_templ::_wrap_Magick_colorMatrixImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_colorMatrixImage_templ::InstanceMethod("call",
        &_Magick_colorMatrixImage_templ::_wrap_Magick_colorMatrixImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_colorSpaceImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_colorSpaceImage_templ(const Napi::CallbackInfo &);
_Magick_colorSpaceImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_colorSpaceImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorSpaceImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorSpaceImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_colorSpaceImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_colorSpaceImage_inst : public _Magick_colorSpaceImage_templ<_Magick_colorSpaceImage_inst> {
public:
  using _Magick_colorSpaceImage_templ::_Magick_colorSpaceImage_templ;
  virtual ~_Magick_colorSpaceImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_colorSpaceImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_colorSpaceImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: colorSpaceImage (_Magick_colorSpaceImage) */
// jsnapi_getclass
Napi::Function _Magick_colorSpaceImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_colorSpaceImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_colorSpaceImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_colorSpaceImage_inst>::DefineClass(env, "colorSpaceImage", symbolTable);
}

void _Magick_colorSpaceImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_colorSpaceImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_colorSpaceImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_colorSpaceImage_templ::InstanceMethod("callAsync",
        &_Magick_colorSpaceImage_templ::_wrap_Magick_colorSpaceImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_colorSpaceImage_templ::InstanceMethod("call",
        &_Magick_colorSpaceImage_templ::_wrap_Magick_colorSpaceImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_commentImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_commentImage_templ(const Napi::CallbackInfo &);
_Magick_commentImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_commentImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_commentImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_commentImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_commentImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_commentImage_inst : public _Magick_commentImage_templ<_Magick_commentImage_inst> {
public:
  using _Magick_commentImage_templ::_Magick_commentImage_templ;
  virtual ~_Magick_commentImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_commentImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_commentImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: commentImage (_Magick_commentImage) */
// jsnapi_getclass
Napi::Function _Magick_commentImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_commentImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_commentImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_commentImage_inst>::DefineClass(env, "commentImage", symbolTable);
}

void _Magick_commentImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_commentImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_commentImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_commentImage_templ::InstanceMethod("callAsync",
        &_Magick_commentImage_templ::_wrap_Magick_commentImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_commentImage_templ::InstanceMethod("call",
        &_Magick_commentImage_templ::_wrap_Magick_commentImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_compositeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_compositeImage_templ(const Napi::CallbackInfo &);
_Magick_compositeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_compositeImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_compositeImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_compositeImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_compositeImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_compositeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_compositeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_compositeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_compositeImage_inst : public _Magick_compositeImage_templ<_Magick_compositeImage_inst> {
public:
  using _Magick_compositeImage_templ::_Magick_compositeImage_templ;
  virtual ~_Magick_compositeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_compositeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_compositeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: compositeImage (_Magick_compositeImage) */
// jsnapi_getclass
Napi::Function _Magick_compositeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_compositeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_compositeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_compositeImage_inst>::DefineClass(env, "compositeImage", symbolTable);
}

void _Magick_compositeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_compositeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_compositeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_compositeImage_templ::InstanceMethod("callAsync",
        &_Magick_compositeImage_templ::_wrap_Magick_compositeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_compositeImage_templ::InstanceMethod("call",
        &_Magick_compositeImage_templ::_wrap_Magick_compositeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_contrastImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_contrastImage_templ(const Napi::CallbackInfo &);
_Magick_contrastImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_contrastImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_contrastImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_contrastImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_contrastImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_contrastImage_inst : public _Magick_contrastImage_templ<_Magick_contrastImage_inst> {
public:
  using _Magick_contrastImage_templ::_Magick_contrastImage_templ;
  virtual ~_Magick_contrastImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_contrastImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_contrastImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: contrastImage (_Magick_contrastImage) */
// jsnapi_getclass
Napi::Function _Magick_contrastImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_contrastImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_contrastImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_contrastImage_inst>::DefineClass(env, "contrastImage", symbolTable);
}

void _Magick_contrastImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_contrastImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_contrastImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_contrastImage_templ::InstanceMethod("callAsync",
        &_Magick_contrastImage_templ::_wrap_Magick_contrastImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_contrastImage_templ::InstanceMethod("call",
        &_Magick_contrastImage_templ::_wrap_Magick_contrastImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_cropImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_cropImage_templ(const Napi::CallbackInfo &);
_Magick_cropImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_cropImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_cropImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_cropImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_cropImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_cropImage_inst : public _Magick_cropImage_templ<_Magick_cropImage_inst> {
public:
  using _Magick_cropImage_templ::_Magick_cropImage_templ;
  virtual ~_Magick_cropImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_cropImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_cropImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: cropImage (_Magick_cropImage) */
// jsnapi_getclass
Napi::Function _Magick_cropImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_cropImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_cropImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_cropImage_inst>::DefineClass(env, "cropImage", symbolTable);
}

void _Magick_cropImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_cropImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_cropImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_cropImage_templ::InstanceMethod("callAsync",
        &_Magick_cropImage_templ::_wrap_Magick_cropImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_cropImage_templ::InstanceMethod("call",
        &_Magick_cropImage_templ::_wrap_Magick_cropImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_cycleColormapImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_cycleColormapImage_templ(const Napi::CallbackInfo &);
_Magick_cycleColormapImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_cycleColormapImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_cycleColormapImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_cycleColormapImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_cycleColormapImage_inst : public _Magick_cycleColormapImage_templ<_Magick_cycleColormapImage_inst> {
public:
  using _Magick_cycleColormapImage_templ::_Magick_cycleColormapImage_templ;
  virtual ~_Magick_cycleColormapImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_cycleColormapImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_cycleColormapImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: cycleColormapImage (_Magick_cycleColormapImage) */
// jsnapi_getclass
Napi::Function _Magick_cycleColormapImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_cycleColormapImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_cycleColormapImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_cycleColormapImage_inst>::DefineClass(env, "cycleColormapImage", symbolTable);
}

void _Magick_cycleColormapImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_cycleColormapImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_cycleColormapImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_cycleColormapImage_templ::InstanceMethod("call",
        &_Magick_cycleColormapImage_templ::_wrap_Magick_cycleColormapImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_despeckleImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_despeckleImage_templ(const Napi::CallbackInfo &);
_Magick_despeckleImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_despeckleImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_despeckleImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_despeckleImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_despeckleImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_despeckleImage_inst : public _Magick_despeckleImage_templ<_Magick_despeckleImage_inst> {
public:
  using _Magick_despeckleImage_templ::_Magick_despeckleImage_templ;
  virtual ~_Magick_despeckleImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_despeckleImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_despeckleImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: despeckleImage (_Magick_despeckleImage) */
// jsnapi_getclass
Napi::Function _Magick_despeckleImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_despeckleImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_despeckleImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_despeckleImage_inst>::DefineClass(env, "despeckleImage", symbolTable);
}

void _Magick_despeckleImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_despeckleImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_despeckleImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_despeckleImage_templ::InstanceMethod("callAsync",
        &_Magick_despeckleImage_templ::_wrap_Magick_despeckleImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_despeckleImage_templ::InstanceMethod("call",
        &_Magick_despeckleImage_templ::_wrap_Magick_despeckleImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_distortImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_distortImage_templ(const Napi::CallbackInfo &);
_Magick_distortImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_distortImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_distortImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_distortImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_distortImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_distortImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_distortImage_inst : public _Magick_distortImage_templ<_Magick_distortImage_inst> {
public:
  using _Magick_distortImage_templ::_Magick_distortImage_templ;
  virtual ~_Magick_distortImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_distortImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_distortImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: distortImage (_Magick_distortImage) */
// jsnapi_getclass
Napi::Function _Magick_distortImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_distortImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_distortImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_distortImage_inst>::DefineClass(env, "distortImage", symbolTable);
}

void _Magick_distortImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_distortImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_distortImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_distortImage_templ::InstanceMethod("callAsync",
        &_Magick_distortImage_templ::_wrap_Magick_distortImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_distortImage_templ::InstanceMethod("call",
        &_Magick_distortImage_templ::_wrap_Magick_distortImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_drawImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_drawImage_templ(const Napi::CallbackInfo &);
_Magick_drawImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_drawImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_drawImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_drawImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_drawImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_drawImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_drawImage_inst : public _Magick_drawImage_templ<_Magick_drawImage_inst> {
public:
  using _Magick_drawImage_templ::_Magick_drawImage_templ;
  virtual ~_Magick_drawImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_drawImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_drawImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: drawImage (_Magick_drawImage) */
// jsnapi_getclass
Napi::Function _Magick_drawImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_drawImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_drawImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_drawImage_inst>::DefineClass(env, "drawImage", symbolTable);
}

void _Magick_drawImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_drawImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_drawImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_drawImage_templ::InstanceMethod("callAsync",
        &_Magick_drawImage_templ::_wrap_Magick_drawImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_drawImage_templ::InstanceMethod("call",
        &_Magick_drawImage_templ::_wrap_Magick_drawImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_edgeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_edgeImage_templ(const Napi::CallbackInfo &);
_Magick_edgeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_edgeImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_edgeImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_edgeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_edgeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_edgeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_edgeImage_inst : public _Magick_edgeImage_templ<_Magick_edgeImage_inst> {
public:
  using _Magick_edgeImage_templ::_Magick_edgeImage_templ;
  virtual ~_Magick_edgeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_edgeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_edgeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: edgeImage (_Magick_edgeImage) */
// jsnapi_getclass
Napi::Function _Magick_edgeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_edgeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_edgeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_edgeImage_inst>::DefineClass(env, "edgeImage", symbolTable);
}

void _Magick_edgeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_edgeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_edgeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_edgeImage_templ::InstanceMethod("callAsync",
        &_Magick_edgeImage_templ::_wrap_Magick_edgeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_edgeImage_templ::InstanceMethod("call",
        &_Magick_edgeImage_templ::_wrap_Magick_edgeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_embossImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_embossImage_templ(const Napi::CallbackInfo &);
_Magick_embossImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_embossImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_embossImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_embossImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_embossImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_embossImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_embossImage_inst : public _Magick_embossImage_templ<_Magick_embossImage_inst> {
public:
  using _Magick_embossImage_templ::_Magick_embossImage_templ;
  virtual ~_Magick_embossImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_embossImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_embossImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: embossImage (_Magick_embossImage) */
// jsnapi_getclass
Napi::Function _Magick_embossImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_embossImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_embossImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_embossImage_inst>::DefineClass(env, "embossImage", symbolTable);
}

void _Magick_embossImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_embossImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_embossImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_embossImage_templ::InstanceMethod("callAsync",
        &_Magick_embossImage_templ::_wrap_Magick_embossImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_embossImage_templ::InstanceMethod("call",
        &_Magick_embossImage_templ::_wrap_Magick_embossImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_enhanceImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_enhanceImage_templ(const Napi::CallbackInfo &);
_Magick_enhanceImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_enhanceImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_enhanceImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_enhanceImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_enhanceImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_enhanceImage_inst : public _Magick_enhanceImage_templ<_Magick_enhanceImage_inst> {
public:
  using _Magick_enhanceImage_templ::_Magick_enhanceImage_templ;
  virtual ~_Magick_enhanceImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_enhanceImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_enhanceImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: enhanceImage (_Magick_enhanceImage) */
// jsnapi_getclass
Napi::Function _Magick_enhanceImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_enhanceImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_enhanceImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_enhanceImage_inst>::DefineClass(env, "enhanceImage", symbolTable);
}

void _Magick_enhanceImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_enhanceImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_enhanceImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_enhanceImage_templ::InstanceMethod("callAsync",
        &_Magick_enhanceImage_templ::_wrap_Magick_enhanceImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_enhanceImage_templ::InstanceMethod("call",
        &_Magick_enhanceImage_templ::_wrap_Magick_enhanceImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_equalizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_equalizeImage_templ(const Napi::CallbackInfo &);
_Magick_equalizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_equalizeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_equalizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_equalizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_equalizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_equalizeImage_inst : public _Magick_equalizeImage_templ<_Magick_equalizeImage_inst> {
public:
  using _Magick_equalizeImage_templ::_Magick_equalizeImage_templ;
  virtual ~_Magick_equalizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_equalizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_equalizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: equalizeImage (_Magick_equalizeImage) */
// jsnapi_getclass
Napi::Function _Magick_equalizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_equalizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_equalizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_equalizeImage_inst>::DefineClass(env, "equalizeImage", symbolTable);
}

void _Magick_equalizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_equalizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_equalizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_equalizeImage_templ::InstanceMethod("callAsync",
        &_Magick_equalizeImage_templ::_wrap_Magick_equalizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_equalizeImage_templ::InstanceMethod("call",
        &_Magick_equalizeImage_templ::_wrap_Magick_equalizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_fillColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_fillColorImage_templ(const Napi::CallbackInfo &);
_Magick_fillColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_fillColorImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_fillColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_fillColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_fillColorImage_inst : public _Magick_fillColorImage_templ<_Magick_fillColorImage_inst> {
public:
  using _Magick_fillColorImage_templ::_Magick_fillColorImage_templ;
  virtual ~_Magick_fillColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_fillColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_fillColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: fillColorImage (_Magick_fillColorImage) */
// jsnapi_getclass
Napi::Function _Magick_fillColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_fillColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_fillColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_fillColorImage_inst>::DefineClass(env, "fillColorImage", symbolTable);
}

void _Magick_fillColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_fillColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_fillColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_fillColorImage_templ::InstanceMethod("call",
        &_Magick_fillColorImage_templ::_wrap_Magick_fillColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_flipImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_flipImage_templ(const Napi::CallbackInfo &);
_Magick_flipImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_flipImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_flipImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_flipImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_flipImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_flipImage_inst : public _Magick_flipImage_templ<_Magick_flipImage_inst> {
public:
  using _Magick_flipImage_templ::_Magick_flipImage_templ;
  virtual ~_Magick_flipImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_flipImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_flipImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: flipImage (_Magick_flipImage) */
// jsnapi_getclass
Napi::Function _Magick_flipImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_flipImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_flipImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_flipImage_inst>::DefineClass(env, "flipImage", symbolTable);
}

void _Magick_flipImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_flipImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_flipImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_flipImage_templ::InstanceMethod("callAsync",
        &_Magick_flipImage_templ::_wrap_Magick_flipImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_flipImage_templ::InstanceMethod("call",
        &_Magick_flipImage_templ::_wrap_Magick_flipImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_floodFillAlphaImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_floodFillAlphaImage_templ(const Napi::CallbackInfo &);
_Magick_floodFillAlphaImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillAlphaImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillAlphaImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_floodFillAlphaImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_floodFillAlphaImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_floodFillAlphaImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_floodFillAlphaImage_inst : public _Magick_floodFillAlphaImage_templ<_Magick_floodFillAlphaImage_inst> {
public:
  using _Magick_floodFillAlphaImage_templ::_Magick_floodFillAlphaImage_templ;
  virtual ~_Magick_floodFillAlphaImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_floodFillAlphaImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_floodFillAlphaImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: floodFillAlphaImage (_Magick_floodFillAlphaImage) */
// jsnapi_getclass
Napi::Function _Magick_floodFillAlphaImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_floodFillAlphaImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_floodFillAlphaImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_floodFillAlphaImage_inst>::DefineClass(env, "floodFillAlphaImage", symbolTable);
}

void _Magick_floodFillAlphaImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_floodFillAlphaImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_floodFillAlphaImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_floodFillAlphaImage_templ::InstanceMethod("callAsync",
        &_Magick_floodFillAlphaImage_templ::_wrap_Magick_floodFillAlphaImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_floodFillAlphaImage_templ::InstanceMethod("call",
        &_Magick_floodFillAlphaImage_templ::_wrap_Magick_floodFillAlphaImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_floodFillColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_floodFillColorImage_templ(const Napi::CallbackInfo &);
_Magick_floodFillColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillColorImage__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_floodFillColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_floodFillColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_floodFillColorImage_inst : public _Magick_floodFillColorImage_templ<_Magick_floodFillColorImage_inst> {
public:
  using _Magick_floodFillColorImage_templ::_Magick_floodFillColorImage_templ;
  virtual ~_Magick_floodFillColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_floodFillColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_floodFillColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: floodFillColorImage (_Magick_floodFillColorImage) */
// jsnapi_getclass
Napi::Function _Magick_floodFillColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_floodFillColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_floodFillColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_floodFillColorImage_inst>::DefineClass(env, "floodFillColorImage", symbolTable);
}

void _Magick_floodFillColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_floodFillColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_floodFillColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_floodFillColorImage_templ::InstanceMethod("call",
        &_Magick_floodFillColorImage_templ::_wrap_Magick_floodFillColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_floodFillTextureImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_floodFillTextureImage_templ(const Napi::CallbackInfo &);
_Magick_floodFillTextureImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_5(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_6(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_floodFillTextureImage__SWIG_7(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_floodFillTextureImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_floodFillTextureImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_floodFillTextureImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_floodFillTextureImage_inst : public _Magick_floodFillTextureImage_templ<_Magick_floodFillTextureImage_inst> {
public:
  using _Magick_floodFillTextureImage_templ::_Magick_floodFillTextureImage_templ;
  virtual ~_Magick_floodFillTextureImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_floodFillTextureImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_floodFillTextureImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: floodFillTextureImage (_Magick_floodFillTextureImage) */
// jsnapi_getclass
Napi::Function _Magick_floodFillTextureImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_floodFillTextureImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_floodFillTextureImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_floodFillTextureImage_inst>::DefineClass(env, "floodFillTextureImage", symbolTable);
}

void _Magick_floodFillTextureImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_floodFillTextureImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_floodFillTextureImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_floodFillTextureImage_templ::InstanceMethod("callAsync",
        &_Magick_floodFillTextureImage_templ::_wrap_Magick_floodFillTextureImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_floodFillTextureImage_templ::InstanceMethod("call",
        &_Magick_floodFillTextureImage_templ::_wrap_Magick_floodFillTextureImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_flopImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_flopImage_templ(const Napi::CallbackInfo &);
_Magick_flopImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_flopImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_flopImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_flopImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_flopImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_flopImage_inst : public _Magick_flopImage_templ<_Magick_flopImage_inst> {
public:
  using _Magick_flopImage_templ::_Magick_flopImage_templ;
  virtual ~_Magick_flopImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_flopImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_flopImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: flopImage (_Magick_flopImage) */
// jsnapi_getclass
Napi::Function _Magick_flopImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_flopImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_flopImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_flopImage_inst>::DefineClass(env, "flopImage", symbolTable);
}

void _Magick_flopImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_flopImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_flopImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_flopImage_templ::InstanceMethod("callAsync",
        &_Magick_flopImage_templ::_wrap_Magick_flopImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_flopImage_templ::InstanceMethod("call",
        &_Magick_flopImage_templ::_wrap_Magick_flopImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_frameImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_frameImage_templ(const Napi::CallbackInfo &);
_Magick_frameImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_frameImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_frameImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_frameImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_frameImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_frameImage__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_frameImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_frameImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_frameImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_frameImage_inst : public _Magick_frameImage_templ<_Magick_frameImage_inst> {
public:
  using _Magick_frameImage_templ::_Magick_frameImage_templ;
  virtual ~_Magick_frameImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_frameImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_frameImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: frameImage (_Magick_frameImage) */
// jsnapi_getclass
Napi::Function _Magick_frameImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_frameImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_frameImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_frameImage_inst>::DefineClass(env, "frameImage", symbolTable);
}

void _Magick_frameImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_frameImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_frameImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_frameImage_templ::InstanceMethod("callAsync",
        &_Magick_frameImage_templ::_wrap_Magick_frameImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_frameImage_templ::InstanceMethod("call",
        &_Magick_frameImage_templ::_wrap_Magick_frameImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_gammaImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_gammaImage_templ(const Napi::CallbackInfo &);
_Magick_gammaImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_gammaImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_gammaImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_gammaImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_gammaImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_gammaImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_gammaImage_inst : public _Magick_gammaImage_templ<_Magick_gammaImage_inst> {
public:
  using _Magick_gammaImage_templ::_Magick_gammaImage_templ;
  virtual ~_Magick_gammaImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_gammaImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_gammaImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: gammaImage (_Magick_gammaImage) */
// jsnapi_getclass
Napi::Function _Magick_gammaImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_gammaImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_gammaImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_gammaImage_inst>::DefineClass(env, "gammaImage", symbolTable);
}

void _Magick_gammaImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_gammaImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_gammaImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_gammaImage_templ::InstanceMethod("callAsync",
        &_Magick_gammaImage_templ::_wrap_Magick_gammaImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_gammaImage_templ::InstanceMethod("call",
        &_Magick_gammaImage_templ::_wrap_Magick_gammaImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_gaussianBlurImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_gaussianBlurImage_templ(const Napi::CallbackInfo &);
_Magick_gaussianBlurImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_gaussianBlurImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_gaussianBlurImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_gaussianBlurImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_gaussianBlurImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_gaussianBlurImage_inst : public _Magick_gaussianBlurImage_templ<_Magick_gaussianBlurImage_inst> {
public:
  using _Magick_gaussianBlurImage_templ::_Magick_gaussianBlurImage_templ;
  virtual ~_Magick_gaussianBlurImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_gaussianBlurImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_gaussianBlurImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: gaussianBlurImage (_Magick_gaussianBlurImage) */
// jsnapi_getclass
Napi::Function _Magick_gaussianBlurImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_gaussianBlurImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_gaussianBlurImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_gaussianBlurImage_inst>::DefineClass(env, "gaussianBlurImage", symbolTable);
}

void _Magick_gaussianBlurImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_gaussianBlurImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_gaussianBlurImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_gaussianBlurImage_templ::InstanceMethod("callAsync",
        &_Magick_gaussianBlurImage_templ::_wrap_Magick_gaussianBlurImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_gaussianBlurImage_templ::InstanceMethod("call",
        &_Magick_gaussianBlurImage_templ::_wrap_Magick_gaussianBlurImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_haldClutImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_haldClutImage_templ(const Napi::CallbackInfo &);
_Magick_haldClutImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_haldClutImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_haldClutImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_haldClutImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_haldClutImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_haldClutImage_inst : public _Magick_haldClutImage_templ<_Magick_haldClutImage_inst> {
public:
  using _Magick_haldClutImage_templ::_Magick_haldClutImage_templ;
  virtual ~_Magick_haldClutImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_haldClutImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_haldClutImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: haldClutImage (_Magick_haldClutImage) */
// jsnapi_getclass
Napi::Function _Magick_haldClutImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_haldClutImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_haldClutImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_haldClutImage_inst>::DefineClass(env, "haldClutImage", symbolTable);
}

void _Magick_haldClutImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_haldClutImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_haldClutImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_haldClutImage_templ::InstanceMethod("callAsync",
        &_Magick_haldClutImage_templ::_wrap_Magick_haldClutImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_haldClutImage_templ::InstanceMethod("call",
        &_Magick_haldClutImage_templ::_wrap_Magick_haldClutImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_implodeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_implodeImage_templ(const Napi::CallbackInfo &);
_Magick_implodeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_implodeImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_implodeImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_implodeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_implodeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_implodeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_implodeImage_inst : public _Magick_implodeImage_templ<_Magick_implodeImage_inst> {
public:
  using _Magick_implodeImage_templ::_Magick_implodeImage_templ;
  virtual ~_Magick_implodeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_implodeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_implodeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: implodeImage (_Magick_implodeImage) */
// jsnapi_getclass
Napi::Function _Magick_implodeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_implodeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_implodeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_implodeImage_inst>::DefineClass(env, "implodeImage", symbolTable);
}

void _Magick_implodeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_implodeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_implodeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_implodeImage_templ::InstanceMethod("callAsync",
        &_Magick_implodeImage_templ::_wrap_Magick_implodeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_implodeImage_templ::InstanceMethod("call",
        &_Magick_implodeImage_templ::_wrap_Magick_implodeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_inverseFourierTransformImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_inverseFourierTransformImage_templ(const Napi::CallbackInfo &);
_Magick_inverseFourierTransformImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_inverseFourierTransformImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_inverseFourierTransformImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_inverseFourierTransformImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_inverseFourierTransformImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_inverseFourierTransformImage_inst : public _Magick_inverseFourierTransformImage_templ<_Magick_inverseFourierTransformImage_inst> {
public:
  using _Magick_inverseFourierTransformImage_templ::_Magick_inverseFourierTransformImage_templ;
  virtual ~_Magick_inverseFourierTransformImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_inverseFourierTransformImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_inverseFourierTransformImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: inverseFourierTransformImage (_Magick_inverseFourierTransformImage) */
// jsnapi_getclass
Napi::Function _Magick_inverseFourierTransformImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_inverseFourierTransformImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_inverseFourierTransformImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_inverseFourierTransformImage_inst>::DefineClass(env, "inverseFourierTransformImage", symbolTable);
}

void _Magick_inverseFourierTransformImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_inverseFourierTransformImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_inverseFourierTransformImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_inverseFourierTransformImage_templ::InstanceMethod("callAsync",
        &_Magick_inverseFourierTransformImage_templ::_wrap_Magick_inverseFourierTransformImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_inverseFourierTransformImage_templ::InstanceMethod("call",
        &_Magick_inverseFourierTransformImage_templ::_wrap_Magick_inverseFourierTransformImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_isValidImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_isValidImage_templ(const Napi::CallbackInfo &);
_Magick_isValidImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_isValidImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_isValidImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_isValidImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_isValidImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_isValidImage_inst : public _Magick_isValidImage_templ<_Magick_isValidImage_inst> {
public:
  using _Magick_isValidImage_templ::_Magick_isValidImage_templ;
  virtual ~_Magick_isValidImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_isValidImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_isValidImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: isValidImage (_Magick_isValidImage) */
// jsnapi_getclass
Napi::Function _Magick_isValidImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_isValidImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_isValidImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_isValidImage_inst>::DefineClass(env, "isValidImage", symbolTable);
}

void _Magick_isValidImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_isValidImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_isValidImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_isValidImage_templ::InstanceMethod("callAsync",
        &_Magick_isValidImage_templ::_wrap_Magick_isValidImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_isValidImage_templ::InstanceMethod("call",
        &_Magick_isValidImage_templ::_wrap_Magick_isValidImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_labelImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_labelImage_templ(const Napi::CallbackInfo &);
_Magick_labelImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_labelImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_labelImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_labelImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_labelImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_labelImage_inst : public _Magick_labelImage_templ<_Magick_labelImage_inst> {
public:
  using _Magick_labelImage_templ::_Magick_labelImage_templ;
  virtual ~_Magick_labelImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_labelImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_labelImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: labelImage (_Magick_labelImage) */
// jsnapi_getclass
Napi::Function _Magick_labelImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_labelImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_labelImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_labelImage_inst>::DefineClass(env, "labelImage", symbolTable);
}

void _Magick_labelImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_labelImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_labelImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_labelImage_templ::InstanceMethod("callAsync",
        &_Magick_labelImage_templ::_wrap_Magick_labelImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_labelImage_templ::InstanceMethod("call",
        &_Magick_labelImage_templ::_wrap_Magick_labelImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_levelImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_levelImage_templ(const Napi::CallbackInfo &);
_Magick_levelImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_levelImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_levelImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_levelImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_levelImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_levelImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_levelImage_inst : public _Magick_levelImage_templ<_Magick_levelImage_inst> {
public:
  using _Magick_levelImage_templ::_Magick_levelImage_templ;
  virtual ~_Magick_levelImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_levelImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_levelImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: levelImage (_Magick_levelImage) */
// jsnapi_getclass
Napi::Function _Magick_levelImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_levelImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_levelImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_levelImage_inst>::DefineClass(env, "levelImage", symbolTable);
}

void _Magick_levelImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_levelImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_levelImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_levelImage_templ::InstanceMethod("callAsync",
        &_Magick_levelImage_templ::_wrap_Magick_levelImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_levelImage_templ::InstanceMethod("call",
        &_Magick_levelImage_templ::_wrap_Magick_levelImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_magnifyImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_magnifyImage_templ(const Napi::CallbackInfo &);
_Magick_magnifyImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_magnifyImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_magnifyImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_magnifyImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_magnifyImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_magnifyImage_inst : public _Magick_magnifyImage_templ<_Magick_magnifyImage_inst> {
public:
  using _Magick_magnifyImage_templ::_Magick_magnifyImage_templ;
  virtual ~_Magick_magnifyImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_magnifyImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_magnifyImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: magnifyImage (_Magick_magnifyImage) */
// jsnapi_getclass
Napi::Function _Magick_magnifyImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_magnifyImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_magnifyImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_magnifyImage_inst>::DefineClass(env, "magnifyImage", symbolTable);
}

void _Magick_magnifyImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_magnifyImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_magnifyImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_magnifyImage_templ::InstanceMethod("callAsync",
        &_Magick_magnifyImage_templ::_wrap_Magick_magnifyImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_magnifyImage_templ::InstanceMethod("call",
        &_Magick_magnifyImage_templ::_wrap_Magick_magnifyImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_mapImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_mapImage_templ(const Napi::CallbackInfo &);
_Magick_mapImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_mapImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_mapImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_mapImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_mapImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_mapImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_mapImage_inst : public _Magick_mapImage_templ<_Magick_mapImage_inst> {
public:
  using _Magick_mapImage_templ::_Magick_mapImage_templ;
  virtual ~_Magick_mapImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_mapImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_mapImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: mapImage (_Magick_mapImage) */
// jsnapi_getclass
Napi::Function _Magick_mapImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_mapImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_mapImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_mapImage_inst>::DefineClass(env, "mapImage", symbolTable);
}

void _Magick_mapImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_mapImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_mapImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_mapImage_templ::InstanceMethod("callAsync",
        &_Magick_mapImage_templ::_wrap_Magick_mapImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_mapImage_templ::InstanceMethod("call",
        &_Magick_mapImage_templ::_wrap_Magick_mapImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_medianConvolveImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_medianConvolveImage_templ(const Napi::CallbackInfo &);
_Magick_medianConvolveImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_medianConvolveImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_medianConvolveImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_medianConvolveImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_medianConvolveImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_medianConvolveImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_medianConvolveImage_inst : public _Magick_medianConvolveImage_templ<_Magick_medianConvolveImage_inst> {
public:
  using _Magick_medianConvolveImage_templ::_Magick_medianConvolveImage_templ;
  virtual ~_Magick_medianConvolveImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_medianConvolveImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_medianConvolveImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: medianConvolveImage (_Magick_medianConvolveImage) */
// jsnapi_getclass
Napi::Function _Magick_medianConvolveImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_medianConvolveImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_medianConvolveImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_medianConvolveImage_inst>::DefineClass(env, "medianConvolveImage", symbolTable);
}

void _Magick_medianConvolveImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_medianConvolveImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_medianConvolveImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_medianConvolveImage_templ::InstanceMethod("callAsync",
        &_Magick_medianConvolveImage_templ::_wrap_Magick_medianConvolveImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_medianConvolveImage_templ::InstanceMethod("call",
        &_Magick_medianConvolveImage_templ::_wrap_Magick_medianConvolveImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_minifyImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_minifyImage_templ(const Napi::CallbackInfo &);
_Magick_minifyImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_minifyImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_minifyImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_minifyImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_minifyImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_minifyImage_inst : public _Magick_minifyImage_templ<_Magick_minifyImage_inst> {
public:
  using _Magick_minifyImage_templ::_Magick_minifyImage_templ;
  virtual ~_Magick_minifyImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_minifyImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_minifyImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: minifyImage (_Magick_minifyImage) */
// jsnapi_getclass
Napi::Function _Magick_minifyImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_minifyImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_minifyImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_minifyImage_inst>::DefineClass(env, "minifyImage", symbolTable);
}

void _Magick_minifyImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_minifyImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_minifyImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_minifyImage_templ::InstanceMethod("callAsync",
        &_Magick_minifyImage_templ::_wrap_Magick_minifyImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_minifyImage_templ::InstanceMethod("call",
        &_Magick_minifyImage_templ::_wrap_Magick_minifyImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_modulateImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_modulateImage_templ(const Napi::CallbackInfo &);
_Magick_modulateImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_modulateImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_modulateImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_modulateImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_modulateImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_modulateImage_inst : public _Magick_modulateImage_templ<_Magick_modulateImage_inst> {
public:
  using _Magick_modulateImage_templ::_Magick_modulateImage_templ;
  virtual ~_Magick_modulateImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_modulateImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_modulateImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: modulateImage (_Magick_modulateImage) */
// jsnapi_getclass
Napi::Function _Magick_modulateImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_modulateImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_modulateImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_modulateImage_inst>::DefineClass(env, "modulateImage", symbolTable);
}

void _Magick_modulateImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_modulateImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_modulateImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_modulateImage_templ::InstanceMethod("callAsync",
        &_Magick_modulateImage_templ::_wrap_Magick_modulateImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_modulateImage_templ::InstanceMethod("call",
        &_Magick_modulateImage_templ::_wrap_Magick_modulateImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_negateImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_negateImage_templ(const Napi::CallbackInfo &);
_Magick_negateImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_negateImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_negateImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_negateImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_negateImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_negateImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_negateImage_inst : public _Magick_negateImage_templ<_Magick_negateImage_inst> {
public:
  using _Magick_negateImage_templ::_Magick_negateImage_templ;
  virtual ~_Magick_negateImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_negateImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_negateImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: negateImage (_Magick_negateImage) */
// jsnapi_getclass
Napi::Function _Magick_negateImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_negateImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_negateImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_negateImage_inst>::DefineClass(env, "negateImage", symbolTable);
}

void _Magick_negateImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_negateImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_negateImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_negateImage_templ::InstanceMethod("callAsync",
        &_Magick_negateImage_templ::_wrap_Magick_negateImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_negateImage_templ::InstanceMethod("call",
        &_Magick_negateImage_templ::_wrap_Magick_negateImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_normalizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_normalizeImage_templ(const Napi::CallbackInfo &);
_Magick_normalizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_normalizeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_normalizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_normalizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_normalizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_normalizeImage_inst : public _Magick_normalizeImage_templ<_Magick_normalizeImage_inst> {
public:
  using _Magick_normalizeImage_templ::_Magick_normalizeImage_templ;
  virtual ~_Magick_normalizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_normalizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_normalizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: normalizeImage (_Magick_normalizeImage) */
// jsnapi_getclass
Napi::Function _Magick_normalizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_normalizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_normalizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_normalizeImage_inst>::DefineClass(env, "normalizeImage", symbolTable);
}

void _Magick_normalizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_normalizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_normalizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_normalizeImage_templ::InstanceMethod("callAsync",
        &_Magick_normalizeImage_templ::_wrap_Magick_normalizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_normalizeImage_templ::InstanceMethod("call",
        &_Magick_normalizeImage_templ::_wrap_Magick_normalizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_oilPaintImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_oilPaintImage_templ(const Napi::CallbackInfo &);
_Magick_oilPaintImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_oilPaintImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_oilPaintImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_oilPaintImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_oilPaintImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_oilPaintImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_oilPaintImage_inst : public _Magick_oilPaintImage_templ<_Magick_oilPaintImage_inst> {
public:
  using _Magick_oilPaintImage_templ::_Magick_oilPaintImage_templ;
  virtual ~_Magick_oilPaintImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_oilPaintImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_oilPaintImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: oilPaintImage (_Magick_oilPaintImage) */
// jsnapi_getclass
Napi::Function _Magick_oilPaintImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_oilPaintImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_oilPaintImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_oilPaintImage_inst>::DefineClass(env, "oilPaintImage", symbolTable);
}

void _Magick_oilPaintImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_oilPaintImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_oilPaintImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_oilPaintImage_templ::InstanceMethod("callAsync",
        &_Magick_oilPaintImage_templ::_wrap_Magick_oilPaintImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_oilPaintImage_templ::InstanceMethod("call",
        &_Magick_oilPaintImage_templ::_wrap_Magick_oilPaintImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_alphaImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_alphaImage_templ(const Napi::CallbackInfo &);
_Magick_alphaImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_alphaImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_alphaImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_alphaImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_alphaImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_alphaImage_inst : public _Magick_alphaImage_templ<_Magick_alphaImage_inst> {
public:
  using _Magick_alphaImage_templ::_Magick_alphaImage_templ;
  virtual ~_Magick_alphaImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_alphaImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_alphaImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: alphaImage (_Magick_alphaImage) */
// jsnapi_getclass
Napi::Function _Magick_alphaImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_alphaImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_alphaImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_alphaImage_inst>::DefineClass(env, "alphaImage", symbolTable);
}

void _Magick_alphaImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_alphaImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_alphaImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_alphaImage_templ::InstanceMethod("callAsync",
        &_Magick_alphaImage_templ::_wrap_Magick_alphaImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_alphaImage_templ::InstanceMethod("call",
        &_Magick_alphaImage_templ::_wrap_Magick_alphaImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_opaqueImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_opaqueImage_templ(const Napi::CallbackInfo &);
_Magick_opaqueImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_opaqueImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_opaqueImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_opaqueImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_opaqueImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_opaqueImage_inst : public _Magick_opaqueImage_templ<_Magick_opaqueImage_inst> {
public:
  using _Magick_opaqueImage_templ::_Magick_opaqueImage_templ;
  virtual ~_Magick_opaqueImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_opaqueImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_opaqueImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: opaqueImage (_Magick_opaqueImage) */
// jsnapi_getclass
Napi::Function _Magick_opaqueImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_opaqueImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_opaqueImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_opaqueImage_inst>::DefineClass(env, "opaqueImage", symbolTable);
}

void _Magick_opaqueImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_opaqueImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_opaqueImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_opaqueImage_templ::InstanceMethod("callAsync",
        &_Magick_opaqueImage_templ::_wrap_Magick_opaqueImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_opaqueImage_templ::InstanceMethod("call",
        &_Magick_opaqueImage_templ::_wrap_Magick_opaqueImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_quantizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_quantizeImage_templ(const Napi::CallbackInfo &);
_Magick_quantizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_quantizeImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_quantizeImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_quantizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_quantizeImage_inst : public _Magick_quantizeImage_templ<_Magick_quantizeImage_inst> {
public:
  using _Magick_quantizeImage_templ::_Magick_quantizeImage_templ;
  virtual ~_Magick_quantizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_quantizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_quantizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: quantizeImage (_Magick_quantizeImage) */
// jsnapi_getclass
Napi::Function _Magick_quantizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_quantizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_quantizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_quantizeImage_inst>::DefineClass(env, "quantizeImage", symbolTable);
}

void _Magick_quantizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_quantizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_quantizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_quantizeImage_templ::InstanceMethod("callAsync",
        &_Magick_quantizeImage_templ::_wrap_Magick_quantizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_quantizeImage_templ::InstanceMethod("call",
        &_Magick_quantizeImage_templ::_wrap_Magick_quantizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_raiseImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_raiseImage_templ(const Napi::CallbackInfo &);
_Magick_raiseImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_raiseImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_raiseImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_raiseImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_raiseImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_raiseImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_raiseImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_raiseImage_inst : public _Magick_raiseImage_templ<_Magick_raiseImage_inst> {
public:
  using _Magick_raiseImage_templ::_Magick_raiseImage_templ;
  virtual ~_Magick_raiseImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_raiseImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_raiseImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: raiseImage (_Magick_raiseImage) */
// jsnapi_getclass
Napi::Function _Magick_raiseImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_raiseImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_raiseImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_raiseImage_inst>::DefineClass(env, "raiseImage", symbolTable);
}

void _Magick_raiseImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_raiseImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_raiseImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_raiseImage_templ::InstanceMethod("callAsync",
        &_Magick_raiseImage_templ::_wrap_Magick_raiseImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_raiseImage_templ::InstanceMethod("call",
        &_Magick_raiseImage_templ::_wrap_Magick_raiseImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_ReadOptions_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_ReadOptions_templ(const Napi::CallbackInfo &);
_Magick_ReadOptions_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ReadOptions__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_ReadOptions__SWIG_1(const Napi::CallbackInfo &);
virtual ~_Magick_ReadOptions_templ();
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_density__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_density__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ReadOptions__wrap_Magick_ReadOptions_density(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_depth__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_depth__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ReadOptions__wrap_Magick_ReadOptions_depth(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_ping__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_ping__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ReadOptions__wrap_Magick_ReadOptions_ping(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_quiet__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_quiet__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ReadOptions__wrap_Magick_ReadOptions_quiet(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_size__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_size__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_ReadOptions__wrap_Magick_ReadOptions_size(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_ReadOptions_imageInfo(const Napi::CallbackInfo &);
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_ReadOptions_inst : public _Magick_ReadOptions_templ<_Magick_ReadOptions_inst> {
public:
  using _Magick_ReadOptions_templ::_Magick_ReadOptions_templ;
  virtual ~_Magick_ReadOptions_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_ReadOptions_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_ReadOptions_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: ReadOptions (_Magick_ReadOptions) */
// jsnapi_getclass
Napi::Function _Magick_ReadOptions_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_ReadOptions_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_ReadOptions_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_ReadOptions_inst>::DefineClass(env, "ReadOptions", symbolTable);
}

void _Magick_ReadOptions_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_ReadOptions_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_ReadOptions_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("density");
  members.insert({
    "density",
      _Magick_ReadOptions_templ::InstanceMethod("density",
        &_Magick_ReadOptions_templ::_wrap_ReadOptions__wrap_Magick_ReadOptions_density,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("depth");
  members.insert({
    "depth",
      _Magick_ReadOptions_templ::InstanceMethod("depth",
        &_Magick_ReadOptions_templ::_wrap_ReadOptions__wrap_Magick_ReadOptions_depth,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("ping");
  members.insert({
    "ping",
      _Magick_ReadOptions_templ::InstanceMethod("ping",
        &_Magick_ReadOptions_templ::_wrap_ReadOptions__wrap_Magick_ReadOptions_ping,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("quiet");
  members.insert({
    "quiet",
      _Magick_ReadOptions_templ::InstanceMethod("quiet",
        &_Magick_ReadOptions_templ::_wrap_ReadOptions__wrap_Magick_ReadOptions_quiet,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("size");
  members.insert({
    "size",
      _Magick_ReadOptions_templ::InstanceMethod("size",
        &_Magick_ReadOptions_templ::_wrap_ReadOptions__wrap_Magick_ReadOptions_size,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("imageInfo");
  members.insert({
    "imageInfo",
      _Magick_ReadOptions_templ::InstanceMethod("imageInfo",
        &_Magick_ReadOptions_templ::_wrap_Magick_ReadOptions_imageInfo,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_reduceNoiseImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_reduceNoiseImage_templ(const Napi::CallbackInfo &);
_Magick_reduceNoiseImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_reduceNoiseImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_reduceNoiseImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_reduceNoiseImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_reduceNoiseImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_reduceNoiseImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_reduceNoiseImage_inst : public _Magick_reduceNoiseImage_templ<_Magick_reduceNoiseImage_inst> {
public:
  using _Magick_reduceNoiseImage_templ::_Magick_reduceNoiseImage_templ;
  virtual ~_Magick_reduceNoiseImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_reduceNoiseImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_reduceNoiseImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: reduceNoiseImage (_Magick_reduceNoiseImage) */
// jsnapi_getclass
Napi::Function _Magick_reduceNoiseImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_reduceNoiseImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_reduceNoiseImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_reduceNoiseImage_inst>::DefineClass(env, "reduceNoiseImage", symbolTable);
}

void _Magick_reduceNoiseImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_reduceNoiseImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_reduceNoiseImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_reduceNoiseImage_templ::InstanceMethod("callAsync",
        &_Magick_reduceNoiseImage_templ::_wrap_Magick_reduceNoiseImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_reduceNoiseImage_templ::InstanceMethod("call",
        &_Magick_reduceNoiseImage_templ::_wrap_Magick_reduceNoiseImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_resizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_resizeImage_templ(const Napi::CallbackInfo &);
_Magick_resizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_resizeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_resizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_resizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_resizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_resizeImage_inst : public _Magick_resizeImage_templ<_Magick_resizeImage_inst> {
public:
  using _Magick_resizeImage_templ::_Magick_resizeImage_templ;
  virtual ~_Magick_resizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_resizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_resizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: resizeImage (_Magick_resizeImage) */
// jsnapi_getclass
Napi::Function _Magick_resizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_resizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_resizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_resizeImage_inst>::DefineClass(env, "resizeImage", symbolTable);
}

void _Magick_resizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_resizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_resizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_resizeImage_templ::InstanceMethod("callAsync",
        &_Magick_resizeImage_templ::_wrap_Magick_resizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_resizeImage_templ::InstanceMethod("call",
        &_Magick_resizeImage_templ::_wrap_Magick_resizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_rollImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_rollImage_templ(const Napi::CallbackInfo &);
_Magick_rollImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_rollImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_rollImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_rollImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_rollImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_rollImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_rollImage_inst : public _Magick_rollImage_templ<_Magick_rollImage_inst> {
public:
  using _Magick_rollImage_templ::_Magick_rollImage_templ;
  virtual ~_Magick_rollImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_rollImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_rollImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: rollImage (_Magick_rollImage) */
// jsnapi_getclass
Napi::Function _Magick_rollImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_rollImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_rollImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_rollImage_inst>::DefineClass(env, "rollImage", symbolTable);
}

void _Magick_rollImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_rollImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_rollImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_rollImage_templ::InstanceMethod("callAsync",
        &_Magick_rollImage_templ::_wrap_Magick_rollImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_rollImage_templ::InstanceMethod("call",
        &_Magick_rollImage_templ::_wrap_Magick_rollImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_rotateImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_rotateImage_templ(const Napi::CallbackInfo &);
_Magick_rotateImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_rotateImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_rotateImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_rotateImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_rotateImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_rotateImage_inst : public _Magick_rotateImage_templ<_Magick_rotateImage_inst> {
public:
  using _Magick_rotateImage_templ::_Magick_rotateImage_templ;
  virtual ~_Magick_rotateImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_rotateImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_rotateImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: rotateImage (_Magick_rotateImage) */
// jsnapi_getclass
Napi::Function _Magick_rotateImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_rotateImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_rotateImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_rotateImage_inst>::DefineClass(env, "rotateImage", symbolTable);
}

void _Magick_rotateImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_rotateImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_rotateImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_rotateImage_templ::InstanceMethod("callAsync",
        &_Magick_rotateImage_templ::_wrap_Magick_rotateImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_rotateImage_templ::InstanceMethod("call",
        &_Magick_rotateImage_templ::_wrap_Magick_rotateImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_sampleImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_sampleImage_templ(const Napi::CallbackInfo &);
_Magick_sampleImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_sampleImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sampleImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sampleImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_sampleImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_sampleImage_inst : public _Magick_sampleImage_templ<_Magick_sampleImage_inst> {
public:
  using _Magick_sampleImage_templ::_Magick_sampleImage_templ;
  virtual ~_Magick_sampleImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_sampleImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_sampleImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: sampleImage (_Magick_sampleImage) */
// jsnapi_getclass
Napi::Function _Magick_sampleImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_sampleImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_sampleImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_sampleImage_inst>::DefineClass(env, "sampleImage", symbolTable);
}

void _Magick_sampleImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_sampleImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_sampleImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_sampleImage_templ::InstanceMethod("callAsync",
        &_Magick_sampleImage_templ::_wrap_Magick_sampleImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_sampleImage_templ::InstanceMethod("call",
        &_Magick_sampleImage_templ::_wrap_Magick_sampleImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_scaleImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_scaleImage_templ(const Napi::CallbackInfo &);
_Magick_scaleImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_scaleImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_scaleImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_scaleImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_scaleImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_scaleImage_inst : public _Magick_scaleImage_templ<_Magick_scaleImage_inst> {
public:
  using _Magick_scaleImage_templ::_Magick_scaleImage_templ;
  virtual ~_Magick_scaleImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_scaleImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_scaleImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: scaleImage (_Magick_scaleImage) */
// jsnapi_getclass
Napi::Function _Magick_scaleImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_scaleImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_scaleImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_scaleImage_inst>::DefineClass(env, "scaleImage", symbolTable);
}

void _Magick_scaleImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_scaleImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_scaleImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_scaleImage_templ::InstanceMethod("callAsync",
        &_Magick_scaleImage_templ::_wrap_Magick_scaleImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_scaleImage_templ::InstanceMethod("call",
        &_Magick_scaleImage_templ::_wrap_Magick_scaleImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_segmentImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_segmentImage_templ(const Napi::CallbackInfo &);
_Magick_segmentImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_segmentImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_segmentImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_segmentImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_segmentImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_segmentImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_segmentImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_segmentImage_inst : public _Magick_segmentImage_templ<_Magick_segmentImage_inst> {
public:
  using _Magick_segmentImage_templ::_Magick_segmentImage_templ;
  virtual ~_Magick_segmentImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_segmentImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_segmentImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: segmentImage (_Magick_segmentImage) */
// jsnapi_getclass
Napi::Function _Magick_segmentImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_segmentImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_segmentImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_segmentImage_inst>::DefineClass(env, "segmentImage", symbolTable);
}

void _Magick_segmentImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_segmentImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_segmentImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_segmentImage_templ::InstanceMethod("callAsync",
        &_Magick_segmentImage_templ::_wrap_Magick_segmentImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_segmentImage_templ::InstanceMethod("call",
        &_Magick_segmentImage_templ::_wrap_Magick_segmentImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_shadeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_shadeImage_templ(const Napi::CallbackInfo &);
_Magick_shadeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadeImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadeImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadeImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadeImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shadeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shadeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_shadeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_shadeImage_inst : public _Magick_shadeImage_templ<_Magick_shadeImage_inst> {
public:
  using _Magick_shadeImage_templ::_Magick_shadeImage_templ;
  virtual ~_Magick_shadeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_shadeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_shadeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: shadeImage (_Magick_shadeImage) */
// jsnapi_getclass
Napi::Function _Magick_shadeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_shadeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_shadeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_shadeImage_inst>::DefineClass(env, "shadeImage", symbolTable);
}

void _Magick_shadeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_shadeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_shadeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_shadeImage_templ::InstanceMethod("callAsync",
        &_Magick_shadeImage_templ::_wrap_Magick_shadeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_shadeImage_templ::InstanceMethod("call",
        &_Magick_shadeImage_templ::_wrap_Magick_shadeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_shadowImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_shadowImage_templ(const Napi::CallbackInfo &);
_Magick_shadowImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadowImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadowImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadowImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadowImage__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shadowImage__SWIG_4(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shadowImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shadowImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_shadowImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_shadowImage_inst : public _Magick_shadowImage_templ<_Magick_shadowImage_inst> {
public:
  using _Magick_shadowImage_templ::_Magick_shadowImage_templ;
  virtual ~_Magick_shadowImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_shadowImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_shadowImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: shadowImage (_Magick_shadowImage) */
// jsnapi_getclass
Napi::Function _Magick_shadowImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_shadowImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_shadowImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_shadowImage_inst>::DefineClass(env, "shadowImage", symbolTable);
}

void _Magick_shadowImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_shadowImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_shadowImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_shadowImage_templ::InstanceMethod("callAsync",
        &_Magick_shadowImage_templ::_wrap_Magick_shadowImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_shadowImage_templ::InstanceMethod("call",
        &_Magick_shadowImage_templ::_wrap_Magick_shadowImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_sharpenImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_sharpenImage_templ(const Napi::CallbackInfo &);
_Magick_sharpenImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_sharpenImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_sharpenImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_sharpenImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sharpenImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sharpenImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_sharpenImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_sharpenImage_inst : public _Magick_sharpenImage_templ<_Magick_sharpenImage_inst> {
public:
  using _Magick_sharpenImage_templ::_Magick_sharpenImage_templ;
  virtual ~_Magick_sharpenImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_sharpenImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_sharpenImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: sharpenImage (_Magick_sharpenImage) */
// jsnapi_getclass
Napi::Function _Magick_sharpenImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_sharpenImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_sharpenImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_sharpenImage_inst>::DefineClass(env, "sharpenImage", symbolTable);
}

void _Magick_sharpenImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_sharpenImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_sharpenImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_sharpenImage_templ::InstanceMethod("callAsync",
        &_Magick_sharpenImage_templ::_wrap_Magick_sharpenImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_sharpenImage_templ::InstanceMethod("call",
        &_Magick_sharpenImage_templ::_wrap_Magick_sharpenImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_shaveImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_shaveImage_templ(const Napi::CallbackInfo &);
_Magick_shaveImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shaveImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shaveImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shaveImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_shaveImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_shaveImage_inst : public _Magick_shaveImage_templ<_Magick_shaveImage_inst> {
public:
  using _Magick_shaveImage_templ::_Magick_shaveImage_templ;
  virtual ~_Magick_shaveImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_shaveImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_shaveImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: shaveImage (_Magick_shaveImage) */
// jsnapi_getclass
Napi::Function _Magick_shaveImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_shaveImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_shaveImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_shaveImage_inst>::DefineClass(env, "shaveImage", symbolTable);
}

void _Magick_shaveImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_shaveImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_shaveImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_shaveImage_templ::InstanceMethod("callAsync",
        &_Magick_shaveImage_templ::_wrap_Magick_shaveImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_shaveImage_templ::InstanceMethod("call",
        &_Magick_shaveImage_templ::_wrap_Magick_shaveImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_shearImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_shearImage_templ(const Napi::CallbackInfo &);
_Magick_shearImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_shearImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shearImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_shearImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_shearImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_shearImage_inst : public _Magick_shearImage_templ<_Magick_shearImage_inst> {
public:
  using _Magick_shearImage_templ::_Magick_shearImage_templ;
  virtual ~_Magick_shearImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_shearImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_shearImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: shearImage (_Magick_shearImage) */
// jsnapi_getclass
Napi::Function _Magick_shearImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_shearImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_shearImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_shearImage_inst>::DefineClass(env, "shearImage", symbolTable);
}

void _Magick_shearImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_shearImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_shearImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_shearImage_templ::InstanceMethod("callAsync",
        &_Magick_shearImage_templ::_wrap_Magick_shearImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_shearImage_templ::InstanceMethod("call",
        &_Magick_shearImage_templ::_wrap_Magick_shearImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_solarizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_solarizeImage_templ(const Napi::CallbackInfo &);
_Magick_solarizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_solarizeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_solarizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_solarizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_solarizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_solarizeImage_inst : public _Magick_solarizeImage_templ<_Magick_solarizeImage_inst> {
public:
  using _Magick_solarizeImage_templ::_Magick_solarizeImage_templ;
  virtual ~_Magick_solarizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_solarizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_solarizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: solarizeImage (_Magick_solarizeImage) */
// jsnapi_getclass
Napi::Function _Magick_solarizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_solarizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_solarizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_solarizeImage_inst>::DefineClass(env, "solarizeImage", symbolTable);
}

void _Magick_solarizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_solarizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_solarizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_solarizeImage_templ::InstanceMethod("callAsync",
        &_Magick_solarizeImage_templ::_wrap_Magick_solarizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_solarizeImage_templ::InstanceMethod("call",
        &_Magick_solarizeImage_templ::_wrap_Magick_solarizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_spliceImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_spliceImage_templ(const Napi::CallbackInfo &);
_Magick_spliceImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_spliceImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_spliceImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_spliceImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_spliceImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_spliceImage_inst : public _Magick_spliceImage_templ<_Magick_spliceImage_inst> {
public:
  using _Magick_spliceImage_templ::_Magick_spliceImage_templ;
  virtual ~_Magick_spliceImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_spliceImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_spliceImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: spliceImage (_Magick_spliceImage) */
// jsnapi_getclass
Napi::Function _Magick_spliceImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_spliceImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_spliceImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_spliceImage_inst>::DefineClass(env, "spliceImage", symbolTable);
}

void _Magick_spliceImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_spliceImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_spliceImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_spliceImage_templ::InstanceMethod("callAsync",
        &_Magick_spliceImage_templ::_wrap_Magick_spliceImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_spliceImage_templ::InstanceMethod("call",
        &_Magick_spliceImage_templ::_wrap_Magick_spliceImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_spreadImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_spreadImage_templ(const Napi::CallbackInfo &);
_Magick_spreadImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_spreadImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_spreadImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_spreadImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_spreadImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_spreadImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_spreadImage_inst : public _Magick_spreadImage_templ<_Magick_spreadImage_inst> {
public:
  using _Magick_spreadImage_templ::_Magick_spreadImage_templ;
  virtual ~_Magick_spreadImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_spreadImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_spreadImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: spreadImage (_Magick_spreadImage) */
// jsnapi_getclass
Napi::Function _Magick_spreadImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_spreadImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_spreadImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_spreadImage_inst>::DefineClass(env, "spreadImage", symbolTable);
}

void _Magick_spreadImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_spreadImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_spreadImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_spreadImage_templ::InstanceMethod("callAsync",
        &_Magick_spreadImage_templ::_wrap_Magick_spreadImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_spreadImage_templ::InstanceMethod("call",
        &_Magick_spreadImage_templ::_wrap_Magick_spreadImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_steganoImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_steganoImage_templ(const Napi::CallbackInfo &);
_Magick_steganoImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_steganoImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_steganoImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_steganoImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_steganoImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_steganoImage_inst : public _Magick_steganoImage_templ<_Magick_steganoImage_inst> {
public:
  using _Magick_steganoImage_templ::_Magick_steganoImage_templ;
  virtual ~_Magick_steganoImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_steganoImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_steganoImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: steganoImage (_Magick_steganoImage) */
// jsnapi_getclass
Napi::Function _Magick_steganoImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_steganoImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_steganoImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_steganoImage_inst>::DefineClass(env, "steganoImage", symbolTable);
}

void _Magick_steganoImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_steganoImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_steganoImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_steganoImage_templ::InstanceMethod("callAsync",
        &_Magick_steganoImage_templ::_wrap_Magick_steganoImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_steganoImage_templ::InstanceMethod("call",
        &_Magick_steganoImage_templ::_wrap_Magick_steganoImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_stereoImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_stereoImage_templ(const Napi::CallbackInfo &);
_Magick_stereoImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_stereoImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_stereoImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_stereoImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_stereoImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_stereoImage_inst : public _Magick_stereoImage_templ<_Magick_stereoImage_inst> {
public:
  using _Magick_stereoImage_templ::_Magick_stereoImage_templ;
  virtual ~_Magick_stereoImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_stereoImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_stereoImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: stereoImage (_Magick_stereoImage) */
// jsnapi_getclass
Napi::Function _Magick_stereoImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_stereoImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_stereoImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_stereoImage_inst>::DefineClass(env, "stereoImage", symbolTable);
}

void _Magick_stereoImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_stereoImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_stereoImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_stereoImage_templ::InstanceMethod("callAsync",
        &_Magick_stereoImage_templ::_wrap_Magick_stereoImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_stereoImage_templ::InstanceMethod("call",
        &_Magick_stereoImage_templ::_wrap_Magick_stereoImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_strokeColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_strokeColorImage_templ(const Napi::CallbackInfo &);
_Magick_strokeColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_strokeColorImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_strokeColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_strokeColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_strokeColorImage_inst : public _Magick_strokeColorImage_templ<_Magick_strokeColorImage_inst> {
public:
  using _Magick_strokeColorImage_templ::_Magick_strokeColorImage_templ;
  virtual ~_Magick_strokeColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_strokeColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_strokeColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: strokeColorImage (_Magick_strokeColorImage) */
// jsnapi_getclass
Napi::Function _Magick_strokeColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_strokeColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_strokeColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_strokeColorImage_inst>::DefineClass(env, "strokeColorImage", symbolTable);
}

void _Magick_strokeColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_strokeColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_strokeColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_strokeColorImage_templ::InstanceMethod("call",
        &_Magick_strokeColorImage_templ::_wrap_Magick_strokeColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_swirlImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_swirlImage_templ(const Napi::CallbackInfo &);
_Magick_swirlImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_swirlImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_swirlImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_swirlImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_swirlImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_swirlImage_inst : public _Magick_swirlImage_templ<_Magick_swirlImage_inst> {
public:
  using _Magick_swirlImage_templ::_Magick_swirlImage_templ;
  virtual ~_Magick_swirlImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_swirlImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_swirlImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: swirlImage (_Magick_swirlImage) */
// jsnapi_getclass
Napi::Function _Magick_swirlImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_swirlImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_swirlImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_swirlImage_inst>::DefineClass(env, "swirlImage", symbolTable);
}

void _Magick_swirlImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_swirlImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_swirlImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_swirlImage_templ::InstanceMethod("callAsync",
        &_Magick_swirlImage_templ::_wrap_Magick_swirlImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_swirlImage_templ::InstanceMethod("call",
        &_Magick_swirlImage_templ::_wrap_Magick_swirlImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_textureImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_textureImage_templ(const Napi::CallbackInfo &);
_Magick_textureImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_textureImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_textureImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_textureImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_textureImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_textureImage_inst : public _Magick_textureImage_templ<_Magick_textureImage_inst> {
public:
  using _Magick_textureImage_templ::_Magick_textureImage_templ;
  virtual ~_Magick_textureImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_textureImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_textureImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: textureImage (_Magick_textureImage) */
// jsnapi_getclass
Napi::Function _Magick_textureImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_textureImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_textureImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_textureImage_inst>::DefineClass(env, "textureImage", symbolTable);
}

void _Magick_textureImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_textureImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_textureImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_textureImage_templ::InstanceMethod("callAsync",
        &_Magick_textureImage_templ::_wrap_Magick_textureImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_textureImage_templ::InstanceMethod("call",
        &_Magick_textureImage_templ::_wrap_Magick_textureImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_thresholdImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_thresholdImage_templ(const Napi::CallbackInfo &);
_Magick_thresholdImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_thresholdImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_thresholdImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_thresholdImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_thresholdImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_thresholdImage_inst : public _Magick_thresholdImage_templ<_Magick_thresholdImage_inst> {
public:
  using _Magick_thresholdImage_templ::_Magick_thresholdImage_templ;
  virtual ~_Magick_thresholdImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_thresholdImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_thresholdImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: thresholdImage (_Magick_thresholdImage) */
// jsnapi_getclass
Napi::Function _Magick_thresholdImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_thresholdImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_thresholdImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_thresholdImage_inst>::DefineClass(env, "thresholdImage", symbolTable);
}

void _Magick_thresholdImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_thresholdImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_thresholdImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_thresholdImage_templ::InstanceMethod("callAsync",
        &_Magick_thresholdImage_templ::_wrap_Magick_thresholdImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_thresholdImage_templ::InstanceMethod("call",
        &_Magick_thresholdImage_templ::_wrap_Magick_thresholdImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_transparentImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_transparentImage_templ(const Napi::CallbackInfo &);
_Magick_transparentImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_transparentImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_transparentImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_transparentImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_transparentImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_transparentImage_inst : public _Magick_transparentImage_templ<_Magick_transparentImage_inst> {
public:
  using _Magick_transparentImage_templ::_Magick_transparentImage_templ;
  virtual ~_Magick_transparentImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_transparentImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_transparentImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: transparentImage (_Magick_transparentImage) */
// jsnapi_getclass
Napi::Function _Magick_transparentImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_transparentImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_transparentImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_transparentImage_inst>::DefineClass(env, "transparentImage", symbolTable);
}

void _Magick_transparentImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_transparentImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_transparentImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_transparentImage_templ::InstanceMethod("callAsync",
        &_Magick_transparentImage_templ::_wrap_Magick_transparentImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_transparentImage_templ::InstanceMethod("call",
        &_Magick_transparentImage_templ::_wrap_Magick_transparentImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_trimImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_trimImage_templ(const Napi::CallbackInfo &);
_Magick_trimImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_trimImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_trimImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_trimImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_trimImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_trimImage_inst : public _Magick_trimImage_templ<_Magick_trimImage_inst> {
public:
  using _Magick_trimImage_templ::_Magick_trimImage_templ;
  virtual ~_Magick_trimImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_trimImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_trimImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: trimImage (_Magick_trimImage) */
// jsnapi_getclass
Napi::Function _Magick_trimImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_trimImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_trimImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_trimImage_inst>::DefineClass(env, "trimImage", symbolTable);
}

void _Magick_trimImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_trimImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_trimImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_trimImage_templ::InstanceMethod("callAsync",
        &_Magick_trimImage_templ::_wrap_Magick_trimImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_trimImage_templ::InstanceMethod("call",
        &_Magick_trimImage_templ::_wrap_Magick_trimImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_waveImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_waveImage_templ(const Napi::CallbackInfo &);
_Magick_waveImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_waveImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_waveImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_waveImage__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_waveImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_waveImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_waveImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_waveImage_inst : public _Magick_waveImage_templ<_Magick_waveImage_inst> {
public:
  using _Magick_waveImage_templ::_Magick_waveImage_templ;
  virtual ~_Magick_waveImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_waveImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_waveImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: waveImage (_Magick_waveImage) */
// jsnapi_getclass
Napi::Function _Magick_waveImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_waveImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_waveImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_waveImage_inst>::DefineClass(env, "waveImage", symbolTable);
}

void _Magick_waveImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_waveImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_waveImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_waveImage_templ::InstanceMethod("callAsync",
        &_Magick_waveImage_templ::_wrap_Magick_waveImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_waveImage_templ::InstanceMethod("call",
        &_Magick_waveImage_templ::_wrap_Magick_waveImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_zoomImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_zoomImage_templ(const Napi::CallbackInfo &);
_Magick_zoomImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_zoomImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_zoomImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_zoomImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_zoomImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_zoomImage_inst : public _Magick_zoomImage_templ<_Magick_zoomImage_inst> {
public:
  using _Magick_zoomImage_templ::_Magick_zoomImage_templ;
  virtual ~_Magick_zoomImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_zoomImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_zoomImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: zoomImage (_Magick_zoomImage) */
// jsnapi_getclass
Napi::Function _Magick_zoomImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_zoomImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_zoomImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_zoomImage_inst>::DefineClass(env, "zoomImage", symbolTable);
}

void _Magick_zoomImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_zoomImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_zoomImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_zoomImage_templ::InstanceMethod("callAsync",
        &_Magick_zoomImage_templ::_wrap_Magick_zoomImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_zoomImage_templ::InstanceMethod("call",
        &_Magick_zoomImage_templ::_wrap_Magick_zoomImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_adjoinImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_adjoinImage_templ(const Napi::CallbackInfo &);
_Magick_adjoinImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_adjoinImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_adjoinImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_adjoinImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_adjoinImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_adjoinImage_inst : public _Magick_adjoinImage_templ<_Magick_adjoinImage_inst> {
public:
  using _Magick_adjoinImage_templ::_Magick_adjoinImage_templ;
  virtual ~_Magick_adjoinImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_adjoinImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_adjoinImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: adjoinImage (_Magick_adjoinImage) */
// jsnapi_getclass
Napi::Function _Magick_adjoinImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_adjoinImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_adjoinImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_adjoinImage_inst>::DefineClass(env, "adjoinImage", symbolTable);
}

void _Magick_adjoinImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_adjoinImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_adjoinImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_adjoinImage_templ::InstanceMethod("callAsync",
        &_Magick_adjoinImage_templ::_wrap_Magick_adjoinImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_adjoinImage_templ::InstanceMethod("call",
        &_Magick_adjoinImage_templ::_wrap_Magick_adjoinImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_animationDelayImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_animationDelayImage_templ(const Napi::CallbackInfo &);
_Magick_animationDelayImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_animationDelayImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_animationDelayImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_animationDelayImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_animationDelayImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_animationDelayImage_inst : public _Magick_animationDelayImage_templ<_Magick_animationDelayImage_inst> {
public:
  using _Magick_animationDelayImage_templ::_Magick_animationDelayImage_templ;
  virtual ~_Magick_animationDelayImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_animationDelayImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_animationDelayImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: animationDelayImage (_Magick_animationDelayImage) */
// jsnapi_getclass
Napi::Function _Magick_animationDelayImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_animationDelayImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_animationDelayImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_animationDelayImage_inst>::DefineClass(env, "animationDelayImage", symbolTable);
}

void _Magick_animationDelayImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_animationDelayImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_animationDelayImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_animationDelayImage_templ::InstanceMethod("callAsync",
        &_Magick_animationDelayImage_templ::_wrap_Magick_animationDelayImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_animationDelayImage_templ::InstanceMethod("call",
        &_Magick_animationDelayImage_templ::_wrap_Magick_animationDelayImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_animationIterationsImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_animationIterationsImage_templ(const Napi::CallbackInfo &);
_Magick_animationIterationsImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_animationIterationsImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_animationIterationsImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_animationIterationsImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_animationIterationsImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_animationIterationsImage_inst : public _Magick_animationIterationsImage_templ<_Magick_animationIterationsImage_inst> {
public:
  using _Magick_animationIterationsImage_templ::_Magick_animationIterationsImage_templ;
  virtual ~_Magick_animationIterationsImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_animationIterationsImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_animationIterationsImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: animationIterationsImage (_Magick_animationIterationsImage) */
// jsnapi_getclass
Napi::Function _Magick_animationIterationsImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_animationIterationsImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_animationIterationsImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_animationIterationsImage_inst>::DefineClass(env, "animationIterationsImage", symbolTable);
}

void _Magick_animationIterationsImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_animationIterationsImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_animationIterationsImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_animationIterationsImage_templ::InstanceMethod("callAsync",
        &_Magick_animationIterationsImage_templ::_wrap_Magick_animationIterationsImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_animationIterationsImage_templ::InstanceMethod("call",
        &_Magick_animationIterationsImage_templ::_wrap_Magick_animationIterationsImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_backgroundColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_backgroundColorImage_templ(const Napi::CallbackInfo &);
_Magick_backgroundColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_backgroundColorImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_backgroundColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_backgroundColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_backgroundColorImage_inst : public _Magick_backgroundColorImage_templ<_Magick_backgroundColorImage_inst> {
public:
  using _Magick_backgroundColorImage_templ::_Magick_backgroundColorImage_templ;
  virtual ~_Magick_backgroundColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_backgroundColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_backgroundColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: backgroundColorImage (_Magick_backgroundColorImage) */
// jsnapi_getclass
Napi::Function _Magick_backgroundColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_backgroundColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_backgroundColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_backgroundColorImage_inst>::DefineClass(env, "backgroundColorImage", symbolTable);
}

void _Magick_backgroundColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_backgroundColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_backgroundColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_backgroundColorImage_templ::InstanceMethod("call",
        &_Magick_backgroundColorImage_templ::_wrap_Magick_backgroundColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_backgroundTextureImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_backgroundTextureImage_templ(const Napi::CallbackInfo &);
_Magick_backgroundTextureImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_backgroundTextureImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_backgroundTextureImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_backgroundTextureImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_backgroundTextureImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_backgroundTextureImage_inst : public _Magick_backgroundTextureImage_templ<_Magick_backgroundTextureImage_inst> {
public:
  using _Magick_backgroundTextureImage_templ::_Magick_backgroundTextureImage_templ;
  virtual ~_Magick_backgroundTextureImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_backgroundTextureImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_backgroundTextureImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: backgroundTextureImage (_Magick_backgroundTextureImage) */
// jsnapi_getclass
Napi::Function _Magick_backgroundTextureImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_backgroundTextureImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_backgroundTextureImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_backgroundTextureImage_inst>::DefineClass(env, "backgroundTextureImage", symbolTable);
}

void _Magick_backgroundTextureImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_backgroundTextureImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_backgroundTextureImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_backgroundTextureImage_templ::InstanceMethod("callAsync",
        &_Magick_backgroundTextureImage_templ::_wrap_Magick_backgroundTextureImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_backgroundTextureImage_templ::InstanceMethod("call",
        &_Magick_backgroundTextureImage_templ::_wrap_Magick_backgroundTextureImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_borderColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_borderColorImage_templ(const Napi::CallbackInfo &);
_Magick_borderColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_borderColorImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_borderColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_borderColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_borderColorImage_inst : public _Magick_borderColorImage_templ<_Magick_borderColorImage_inst> {
public:
  using _Magick_borderColorImage_templ::_Magick_borderColorImage_templ;
  virtual ~_Magick_borderColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_borderColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_borderColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: borderColorImage (_Magick_borderColorImage) */
// jsnapi_getclass
Napi::Function _Magick_borderColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_borderColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_borderColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_borderColorImage_inst>::DefineClass(env, "borderColorImage", symbolTable);
}

void _Magick_borderColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_borderColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_borderColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_borderColorImage_templ::InstanceMethod("call",
        &_Magick_borderColorImage_templ::_wrap_Magick_borderColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_boxColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_boxColorImage_templ(const Napi::CallbackInfo &);
_Magick_boxColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_boxColorImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_boxColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_boxColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_boxColorImage_inst : public _Magick_boxColorImage_templ<_Magick_boxColorImage_inst> {
public:
  using _Magick_boxColorImage_templ::_Magick_boxColorImage_templ;
  virtual ~_Magick_boxColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_boxColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_boxColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: boxColorImage (_Magick_boxColorImage) */
// jsnapi_getclass
Napi::Function _Magick_boxColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_boxColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_boxColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_boxColorImage_inst>::DefineClass(env, "boxColorImage", symbolTable);
}

void _Magick_boxColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_boxColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_boxColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_boxColorImage_templ::InstanceMethod("call",
        &_Magick_boxColorImage_templ::_wrap_Magick_boxColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_chromaBluePrimaryImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_chromaBluePrimaryImage_templ(const Napi::CallbackInfo &);
_Magick_chromaBluePrimaryImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_chromaBluePrimaryImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaBluePrimaryImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaBluePrimaryImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_chromaBluePrimaryImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_chromaBluePrimaryImage_inst : public _Magick_chromaBluePrimaryImage_templ<_Magick_chromaBluePrimaryImage_inst> {
public:
  using _Magick_chromaBluePrimaryImage_templ::_Magick_chromaBluePrimaryImage_templ;
  virtual ~_Magick_chromaBluePrimaryImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_chromaBluePrimaryImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_chromaBluePrimaryImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: chromaBluePrimaryImage (_Magick_chromaBluePrimaryImage) */
// jsnapi_getclass
Napi::Function _Magick_chromaBluePrimaryImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_chromaBluePrimaryImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_chromaBluePrimaryImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_chromaBluePrimaryImage_inst>::DefineClass(env, "chromaBluePrimaryImage", symbolTable);
}

void _Magick_chromaBluePrimaryImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_chromaBluePrimaryImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_chromaBluePrimaryImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_chromaBluePrimaryImage_templ::InstanceMethod("callAsync",
        &_Magick_chromaBluePrimaryImage_templ::_wrap_Magick_chromaBluePrimaryImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_chromaBluePrimaryImage_templ::InstanceMethod("call",
        &_Magick_chromaBluePrimaryImage_templ::_wrap_Magick_chromaBluePrimaryImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_chromaGreenPrimaryImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_chromaGreenPrimaryImage_templ(const Napi::CallbackInfo &);
_Magick_chromaGreenPrimaryImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_chromaGreenPrimaryImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaGreenPrimaryImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaGreenPrimaryImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_chromaGreenPrimaryImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_chromaGreenPrimaryImage_inst : public _Magick_chromaGreenPrimaryImage_templ<_Magick_chromaGreenPrimaryImage_inst> {
public:
  using _Magick_chromaGreenPrimaryImage_templ::_Magick_chromaGreenPrimaryImage_templ;
  virtual ~_Magick_chromaGreenPrimaryImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_chromaGreenPrimaryImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_chromaGreenPrimaryImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: chromaGreenPrimaryImage (_Magick_chromaGreenPrimaryImage) */
// jsnapi_getclass
Napi::Function _Magick_chromaGreenPrimaryImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_chromaGreenPrimaryImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_chromaGreenPrimaryImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_chromaGreenPrimaryImage_inst>::DefineClass(env, "chromaGreenPrimaryImage", symbolTable);
}

void _Magick_chromaGreenPrimaryImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_chromaGreenPrimaryImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_chromaGreenPrimaryImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_chromaGreenPrimaryImage_templ::InstanceMethod("callAsync",
        &_Magick_chromaGreenPrimaryImage_templ::_wrap_Magick_chromaGreenPrimaryImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_chromaGreenPrimaryImage_templ::InstanceMethod("call",
        &_Magick_chromaGreenPrimaryImage_templ::_wrap_Magick_chromaGreenPrimaryImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_chromaRedPrimaryImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_chromaRedPrimaryImage_templ(const Napi::CallbackInfo &);
_Magick_chromaRedPrimaryImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_chromaRedPrimaryImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaRedPrimaryImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaRedPrimaryImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_chromaRedPrimaryImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_chromaRedPrimaryImage_inst : public _Magick_chromaRedPrimaryImage_templ<_Magick_chromaRedPrimaryImage_inst> {
public:
  using _Magick_chromaRedPrimaryImage_templ::_Magick_chromaRedPrimaryImage_templ;
  virtual ~_Magick_chromaRedPrimaryImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_chromaRedPrimaryImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_chromaRedPrimaryImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: chromaRedPrimaryImage (_Magick_chromaRedPrimaryImage) */
// jsnapi_getclass
Napi::Function _Magick_chromaRedPrimaryImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_chromaRedPrimaryImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_chromaRedPrimaryImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_chromaRedPrimaryImage_inst>::DefineClass(env, "chromaRedPrimaryImage", symbolTable);
}

void _Magick_chromaRedPrimaryImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_chromaRedPrimaryImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_chromaRedPrimaryImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_chromaRedPrimaryImage_templ::InstanceMethod("callAsync",
        &_Magick_chromaRedPrimaryImage_templ::_wrap_Magick_chromaRedPrimaryImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_chromaRedPrimaryImage_templ::InstanceMethod("call",
        &_Magick_chromaRedPrimaryImage_templ::_wrap_Magick_chromaRedPrimaryImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_chromaWhitePointImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_chromaWhitePointImage_templ(const Napi::CallbackInfo &);
_Magick_chromaWhitePointImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_chromaWhitePointImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaWhitePointImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_chromaWhitePointImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_chromaWhitePointImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_chromaWhitePointImage_inst : public _Magick_chromaWhitePointImage_templ<_Magick_chromaWhitePointImage_inst> {
public:
  using _Magick_chromaWhitePointImage_templ::_Magick_chromaWhitePointImage_templ;
  virtual ~_Magick_chromaWhitePointImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_chromaWhitePointImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_chromaWhitePointImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: chromaWhitePointImage (_Magick_chromaWhitePointImage) */
// jsnapi_getclass
Napi::Function _Magick_chromaWhitePointImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_chromaWhitePointImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_chromaWhitePointImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_chromaWhitePointImage_inst>::DefineClass(env, "chromaWhitePointImage", symbolTable);
}

void _Magick_chromaWhitePointImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_chromaWhitePointImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_chromaWhitePointImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_chromaWhitePointImage_templ::InstanceMethod("callAsync",
        &_Magick_chromaWhitePointImage_templ::_wrap_Magick_chromaWhitePointImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_chromaWhitePointImage_templ::InstanceMethod("call",
        &_Magick_chromaWhitePointImage_templ::_wrap_Magick_chromaWhitePointImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_colorFuzzImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_colorFuzzImage_templ(const Napi::CallbackInfo &);
_Magick_colorFuzzImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_colorFuzzImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorFuzzImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorFuzzImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_colorFuzzImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_colorFuzzImage_inst : public _Magick_colorFuzzImage_templ<_Magick_colorFuzzImage_inst> {
public:
  using _Magick_colorFuzzImage_templ::_Magick_colorFuzzImage_templ;
  virtual ~_Magick_colorFuzzImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_colorFuzzImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_colorFuzzImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: colorFuzzImage (_Magick_colorFuzzImage) */
// jsnapi_getclass
Napi::Function _Magick_colorFuzzImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_colorFuzzImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_colorFuzzImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_colorFuzzImage_inst>::DefineClass(env, "colorFuzzImage", symbolTable);
}

void _Magick_colorFuzzImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_colorFuzzImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_colorFuzzImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_colorFuzzImage_templ::InstanceMethod("callAsync",
        &_Magick_colorFuzzImage_templ::_wrap_Magick_colorFuzzImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_colorFuzzImage_templ::InstanceMethod("call",
        &_Magick_colorFuzzImage_templ::_wrap_Magick_colorFuzzImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_colorMapImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_colorMapImage_templ(const Napi::CallbackInfo &);
_Magick_colorMapImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_colorMapImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorMapImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_colorMapImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_colorMapImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_colorMapImage_inst : public _Magick_colorMapImage_templ<_Magick_colorMapImage_inst> {
public:
  using _Magick_colorMapImage_templ::_Magick_colorMapImage_templ;
  virtual ~_Magick_colorMapImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_colorMapImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_colorMapImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: colorMapImage (_Magick_colorMapImage) */
// jsnapi_getclass
Napi::Function _Magick_colorMapImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_colorMapImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_colorMapImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_colorMapImage_inst>::DefineClass(env, "colorMapImage", symbolTable);
}

void _Magick_colorMapImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_colorMapImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_colorMapImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_colorMapImage_templ::InstanceMethod("callAsync",
        &_Magick_colorMapImage_templ::_wrap_Magick_colorMapImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_colorMapImage_templ::InstanceMethod("call",
        &_Magick_colorMapImage_templ::_wrap_Magick_colorMapImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_composeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_composeImage_templ(const Napi::CallbackInfo &);
_Magick_composeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_composeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_composeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_composeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_composeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_composeImage_inst : public _Magick_composeImage_templ<_Magick_composeImage_inst> {
public:
  using _Magick_composeImage_templ::_Magick_composeImage_templ;
  virtual ~_Magick_composeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_composeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_composeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: composeImage (_Magick_composeImage) */
// jsnapi_getclass
Napi::Function _Magick_composeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_composeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_composeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_composeImage_inst>::DefineClass(env, "composeImage", symbolTable);
}

void _Magick_composeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_composeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_composeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_composeImage_templ::InstanceMethod("callAsync",
        &_Magick_composeImage_templ::_wrap_Magick_composeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_composeImage_templ::InstanceMethod("call",
        &_Magick_composeImage_templ::_wrap_Magick_composeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_compressTypeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_compressTypeImage_templ(const Napi::CallbackInfo &);
_Magick_compressTypeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_compressTypeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_compressTypeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_compressTypeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_compressTypeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_compressTypeImage_inst : public _Magick_compressTypeImage_templ<_Magick_compressTypeImage_inst> {
public:
  using _Magick_compressTypeImage_templ::_Magick_compressTypeImage_templ;
  virtual ~_Magick_compressTypeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_compressTypeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_compressTypeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: compressTypeImage (_Magick_compressTypeImage) */
// jsnapi_getclass
Napi::Function _Magick_compressTypeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_compressTypeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_compressTypeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_compressTypeImage_inst>::DefineClass(env, "compressTypeImage", symbolTable);
}

void _Magick_compressTypeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_compressTypeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_compressTypeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_compressTypeImage_templ::InstanceMethod("callAsync",
        &_Magick_compressTypeImage_templ::_wrap_Magick_compressTypeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_compressTypeImage_templ::InstanceMethod("call",
        &_Magick_compressTypeImage_templ::_wrap_Magick_compressTypeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_densityImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_densityImage_templ(const Napi::CallbackInfo &);
_Magick_densityImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_densityImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_densityImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_densityImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_densityImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_densityImage_inst : public _Magick_densityImage_templ<_Magick_densityImage_inst> {
public:
  using _Magick_densityImage_templ::_Magick_densityImage_templ;
  virtual ~_Magick_densityImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_densityImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_densityImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: densityImage (_Magick_densityImage) */
// jsnapi_getclass
Napi::Function _Magick_densityImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_densityImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_densityImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_densityImage_inst>::DefineClass(env, "densityImage", symbolTable);
}

void _Magick_densityImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_densityImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_densityImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_densityImage_templ::InstanceMethod("callAsync",
        &_Magick_densityImage_templ::_wrap_Magick_densityImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_densityImage_templ::InstanceMethod("call",
        &_Magick_densityImage_templ::_wrap_Magick_densityImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_depthImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_depthImage_templ(const Napi::CallbackInfo &);
_Magick_depthImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_depthImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_depthImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_depthImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_depthImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_depthImage_inst : public _Magick_depthImage_templ<_Magick_depthImage_inst> {
public:
  using _Magick_depthImage_templ::_Magick_depthImage_templ;
  virtual ~_Magick_depthImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_depthImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_depthImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: depthImage (_Magick_depthImage) */
// jsnapi_getclass
Napi::Function _Magick_depthImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_depthImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_depthImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_depthImage_inst>::DefineClass(env, "depthImage", symbolTable);
}

void _Magick_depthImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_depthImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_depthImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_depthImage_templ::InstanceMethod("callAsync",
        &_Magick_depthImage_templ::_wrap_Magick_depthImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_depthImage_templ::InstanceMethod("call",
        &_Magick_depthImage_templ::_wrap_Magick_depthImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_endianImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_endianImage_templ(const Napi::CallbackInfo &);
_Magick_endianImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_endianImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_endianImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_endianImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_endianImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_endianImage_inst : public _Magick_endianImage_templ<_Magick_endianImage_inst> {
public:
  using _Magick_endianImage_templ::_Magick_endianImage_templ;
  virtual ~_Magick_endianImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_endianImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_endianImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: endianImage (_Magick_endianImage) */
// jsnapi_getclass
Napi::Function _Magick_endianImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_endianImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_endianImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_endianImage_inst>::DefineClass(env, "endianImage", symbolTable);
}

void _Magick_endianImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_endianImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_endianImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_endianImage_templ::InstanceMethod("callAsync",
        &_Magick_endianImage_templ::_wrap_Magick_endianImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_endianImage_templ::InstanceMethod("call",
        &_Magick_endianImage_templ::_wrap_Magick_endianImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_fileNameImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_fileNameImage_templ(const Napi::CallbackInfo &);
_Magick_fileNameImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_fileNameImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_fileNameImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_fileNameImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_fileNameImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_fileNameImage_inst : public _Magick_fileNameImage_templ<_Magick_fileNameImage_inst> {
public:
  using _Magick_fileNameImage_templ::_Magick_fileNameImage_templ;
  virtual ~_Magick_fileNameImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_fileNameImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_fileNameImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: fileNameImage (_Magick_fileNameImage) */
// jsnapi_getclass
Napi::Function _Magick_fileNameImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_fileNameImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_fileNameImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_fileNameImage_inst>::DefineClass(env, "fileNameImage", symbolTable);
}

void _Magick_fileNameImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_fileNameImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_fileNameImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_fileNameImage_templ::InstanceMethod("callAsync",
        &_Magick_fileNameImage_templ::_wrap_Magick_fileNameImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_fileNameImage_templ::InstanceMethod("call",
        &_Magick_fileNameImage_templ::_wrap_Magick_fileNameImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_filterTypeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_filterTypeImage_templ(const Napi::CallbackInfo &);
_Magick_filterTypeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_filterTypeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_filterTypeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_filterTypeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_filterTypeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_filterTypeImage_inst : public _Magick_filterTypeImage_templ<_Magick_filterTypeImage_inst> {
public:
  using _Magick_filterTypeImage_templ::_Magick_filterTypeImage_templ;
  virtual ~_Magick_filterTypeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_filterTypeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_filterTypeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: filterTypeImage (_Magick_filterTypeImage) */
// jsnapi_getclass
Napi::Function _Magick_filterTypeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_filterTypeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_filterTypeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_filterTypeImage_inst>::DefineClass(env, "filterTypeImage", symbolTable);
}

void _Magick_filterTypeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_filterTypeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_filterTypeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_filterTypeImage_templ::InstanceMethod("callAsync",
        &_Magick_filterTypeImage_templ::_wrap_Magick_filterTypeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_filterTypeImage_templ::InstanceMethod("call",
        &_Magick_filterTypeImage_templ::_wrap_Magick_filterTypeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_fontImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_fontImage_templ(const Napi::CallbackInfo &);
_Magick_fontImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_fontImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_fontImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_fontImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_fontImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_fontImage_inst : public _Magick_fontImage_templ<_Magick_fontImage_inst> {
public:
  using _Magick_fontImage_templ::_Magick_fontImage_templ;
  virtual ~_Magick_fontImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_fontImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_fontImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: fontImage (_Magick_fontImage) */
// jsnapi_getclass
Napi::Function _Magick_fontImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_fontImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_fontImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_fontImage_inst>::DefineClass(env, "fontImage", symbolTable);
}

void _Magick_fontImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_fontImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_fontImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_fontImage_templ::InstanceMethod("callAsync",
        &_Magick_fontImage_templ::_wrap_Magick_fontImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_fontImage_templ::InstanceMethod("call",
        &_Magick_fontImage_templ::_wrap_Magick_fontImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_fontPointsizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_fontPointsizeImage_templ(const Napi::CallbackInfo &);
_Magick_fontPointsizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_fontPointsizeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_fontPointsizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_fontPointsizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_fontPointsizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_fontPointsizeImage_inst : public _Magick_fontPointsizeImage_templ<_Magick_fontPointsizeImage_inst> {
public:
  using _Magick_fontPointsizeImage_templ::_Magick_fontPointsizeImage_templ;
  virtual ~_Magick_fontPointsizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_fontPointsizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_fontPointsizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: fontPointsizeImage (_Magick_fontPointsizeImage) */
// jsnapi_getclass
Napi::Function _Magick_fontPointsizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_fontPointsizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_fontPointsizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_fontPointsizeImage_inst>::DefineClass(env, "fontPointsizeImage", symbolTable);
}

void _Magick_fontPointsizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_fontPointsizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_fontPointsizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_fontPointsizeImage_templ::InstanceMethod("callAsync",
        &_Magick_fontPointsizeImage_templ::_wrap_Magick_fontPointsizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_fontPointsizeImage_templ::InstanceMethod("call",
        &_Magick_fontPointsizeImage_templ::_wrap_Magick_fontPointsizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_gifDisposeMethodImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_gifDisposeMethodImage_templ(const Napi::CallbackInfo &);
_Magick_gifDisposeMethodImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_gifDisposeMethodImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_gifDisposeMethodImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_gifDisposeMethodImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_gifDisposeMethodImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_gifDisposeMethodImage_inst : public _Magick_gifDisposeMethodImage_templ<_Magick_gifDisposeMethodImage_inst> {
public:
  using _Magick_gifDisposeMethodImage_templ::_Magick_gifDisposeMethodImage_templ;
  virtual ~_Magick_gifDisposeMethodImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_gifDisposeMethodImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_gifDisposeMethodImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: gifDisposeMethodImage (_Magick_gifDisposeMethodImage) */
// jsnapi_getclass
Napi::Function _Magick_gifDisposeMethodImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_gifDisposeMethodImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_gifDisposeMethodImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_gifDisposeMethodImage_inst>::DefineClass(env, "gifDisposeMethodImage", symbolTable);
}

void _Magick_gifDisposeMethodImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_gifDisposeMethodImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_gifDisposeMethodImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_gifDisposeMethodImage_templ::InstanceMethod("callAsync",
        &_Magick_gifDisposeMethodImage_templ::_wrap_Magick_gifDisposeMethodImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_gifDisposeMethodImage_templ::InstanceMethod("call",
        &_Magick_gifDisposeMethodImage_templ::_wrap_Magick_gifDisposeMethodImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_interlaceTypeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_interlaceTypeImage_templ(const Napi::CallbackInfo &);
_Magick_interlaceTypeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_interlaceTypeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_interlaceTypeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_interlaceTypeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_interlaceTypeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_interlaceTypeImage_inst : public _Magick_interlaceTypeImage_templ<_Magick_interlaceTypeImage_inst> {
public:
  using _Magick_interlaceTypeImage_templ::_Magick_interlaceTypeImage_templ;
  virtual ~_Magick_interlaceTypeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_interlaceTypeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_interlaceTypeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: interlaceTypeImage (_Magick_interlaceTypeImage) */
// jsnapi_getclass
Napi::Function _Magick_interlaceTypeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_interlaceTypeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_interlaceTypeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_interlaceTypeImage_inst>::DefineClass(env, "interlaceTypeImage", symbolTable);
}

void _Magick_interlaceTypeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_interlaceTypeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_interlaceTypeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_interlaceTypeImage_templ::InstanceMethod("callAsync",
        &_Magick_interlaceTypeImage_templ::_wrap_Magick_interlaceTypeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_interlaceTypeImage_templ::InstanceMethod("call",
        &_Magick_interlaceTypeImage_templ::_wrap_Magick_interlaceTypeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_magickImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_magickImage_templ(const Napi::CallbackInfo &);
_Magick_magickImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_magickImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_magickImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_magickImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_magickImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_magickImage_inst : public _Magick_magickImage_templ<_Magick_magickImage_inst> {
public:
  using _Magick_magickImage_templ::_Magick_magickImage_templ;
  virtual ~_Magick_magickImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_magickImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_magickImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: magickImage (_Magick_magickImage) */
// jsnapi_getclass
Napi::Function _Magick_magickImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_magickImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_magickImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_magickImage_inst>::DefineClass(env, "magickImage", symbolTable);
}

void _Magick_magickImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_magickImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_magickImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_magickImage_templ::InstanceMethod("callAsync",
        &_Magick_magickImage_templ::_wrap_Magick_magickImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_magickImage_templ::InstanceMethod("call",
        &_Magick_magickImage_templ::_wrap_Magick_magickImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_alphaFlagImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_alphaFlagImage_templ(const Napi::CallbackInfo &);
_Magick_alphaFlagImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_alphaFlagImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_alphaFlagImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_alphaFlagImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_alphaFlagImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_alphaFlagImage_inst : public _Magick_alphaFlagImage_templ<_Magick_alphaFlagImage_inst> {
public:
  using _Magick_alphaFlagImage_templ::_Magick_alphaFlagImage_templ;
  virtual ~_Magick_alphaFlagImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_alphaFlagImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_alphaFlagImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: alphaFlagImage (_Magick_alphaFlagImage) */
// jsnapi_getclass
Napi::Function _Magick_alphaFlagImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_alphaFlagImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_alphaFlagImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_alphaFlagImage_inst>::DefineClass(env, "alphaFlagImage", symbolTable);
}

void _Magick_alphaFlagImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_alphaFlagImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_alphaFlagImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_alphaFlagImage_templ::InstanceMethod("callAsync",
        &_Magick_alphaFlagImage_templ::_wrap_Magick_alphaFlagImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_alphaFlagImage_templ::InstanceMethod("call",
        &_Magick_alphaFlagImage_templ::_wrap_Magick_alphaFlagImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_matteColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_matteColorImage_templ(const Napi::CallbackInfo &);
_Magick_matteColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_matteColorImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_matteColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_matteColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_matteColorImage_inst : public _Magick_matteColorImage_templ<_Magick_matteColorImage_inst> {
public:
  using _Magick_matteColorImage_templ::_Magick_matteColorImage_templ;
  virtual ~_Magick_matteColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_matteColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_matteColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: matteColorImage (_Magick_matteColorImage) */
// jsnapi_getclass
Napi::Function _Magick_matteColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_matteColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_matteColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_matteColorImage_inst>::DefineClass(env, "matteColorImage", symbolTable);
}

void _Magick_matteColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_matteColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_matteColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_matteColorImage_templ::InstanceMethod("call",
        &_Magick_matteColorImage_templ::_wrap_Magick_matteColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_monochromeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_monochromeImage_templ(const Napi::CallbackInfo &);
_Magick_monochromeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_monochromeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_monochromeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_monochromeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_monochromeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_monochromeImage_inst : public _Magick_monochromeImage_templ<_Magick_monochromeImage_inst> {
public:
  using _Magick_monochromeImage_templ::_Magick_monochromeImage_templ;
  virtual ~_Magick_monochromeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_monochromeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_monochromeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: monochromeImage (_Magick_monochromeImage) */
// jsnapi_getclass
Napi::Function _Magick_monochromeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_monochromeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_monochromeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_monochromeImage_inst>::DefineClass(env, "monochromeImage", symbolTable);
}

void _Magick_monochromeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_monochromeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_monochromeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_monochromeImage_templ::InstanceMethod("callAsync",
        &_Magick_monochromeImage_templ::_wrap_Magick_monochromeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_monochromeImage_templ::InstanceMethod("call",
        &_Magick_monochromeImage_templ::_wrap_Magick_monochromeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_pixelColorImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_pixelColorImage_templ(const Napi::CallbackInfo &);
_Magick_pixelColorImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_pixelColorImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_pixelColorImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_pixelColorImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_pixelColorImage_inst : public _Magick_pixelColorImage_templ<_Magick_pixelColorImage_inst> {
public:
  using _Magick_pixelColorImage_templ::_Magick_pixelColorImage_templ;
  virtual ~_Magick_pixelColorImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_pixelColorImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_pixelColorImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: pixelColorImage (_Magick_pixelColorImage) */
// jsnapi_getclass
Napi::Function _Magick_pixelColorImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_pixelColorImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_pixelColorImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_pixelColorImage_inst>::DefineClass(env, "pixelColorImage", symbolTable);
}

void _Magick_pixelColorImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_pixelColorImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_pixelColorImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_pixelColorImage_templ::InstanceMethod("call",
        &_Magick_pixelColorImage_templ::_wrap_Magick_pixelColorImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_pageImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_pageImage_templ(const Napi::CallbackInfo &);
_Magick_pageImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_pageImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_pageImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_pageImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_pageImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_pageImage_inst : public _Magick_pageImage_templ<_Magick_pageImage_inst> {
public:
  using _Magick_pageImage_templ::_Magick_pageImage_templ;
  virtual ~_Magick_pageImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_pageImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_pageImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: pageImage (_Magick_pageImage) */
// jsnapi_getclass
Napi::Function _Magick_pageImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_pageImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_pageImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_pageImage_inst>::DefineClass(env, "pageImage", symbolTable);
}

void _Magick_pageImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_pageImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_pageImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_pageImage_templ::InstanceMethod("callAsync",
        &_Magick_pageImage_templ::_wrap_Magick_pageImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_pageImage_templ::InstanceMethod("call",
        &_Magick_pageImage_templ::_wrap_Magick_pageImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_qualityImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_qualityImage_templ(const Napi::CallbackInfo &);
_Magick_qualityImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_qualityImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_qualityImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_qualityImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_qualityImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_qualityImage_inst : public _Magick_qualityImage_templ<_Magick_qualityImage_inst> {
public:
  using _Magick_qualityImage_templ::_Magick_qualityImage_templ;
  virtual ~_Magick_qualityImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_qualityImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_qualityImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: qualityImage (_Magick_qualityImage) */
// jsnapi_getclass
Napi::Function _Magick_qualityImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_qualityImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_qualityImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_qualityImage_inst>::DefineClass(env, "qualityImage", symbolTable);
}

void _Magick_qualityImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_qualityImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_qualityImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_qualityImage_templ::InstanceMethod("callAsync",
        &_Magick_qualityImage_templ::_wrap_Magick_qualityImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_qualityImage_templ::InstanceMethod("call",
        &_Magick_qualityImage_templ::_wrap_Magick_qualityImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_quantizeColorsImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_quantizeColorsImage_templ(const Napi::CallbackInfo &);
_Magick_quantizeColorsImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_quantizeColorsImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeColorsImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_quantizeColorsImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_quantizeColorsImage_inst : public _Magick_quantizeColorsImage_templ<_Magick_quantizeColorsImage_inst> {
public:
  using _Magick_quantizeColorsImage_templ::_Magick_quantizeColorsImage_templ;
  virtual ~_Magick_quantizeColorsImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_quantizeColorsImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_quantizeColorsImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: quantizeColorsImage (_Magick_quantizeColorsImage) */
// jsnapi_getclass
Napi::Function _Magick_quantizeColorsImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_quantizeColorsImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_quantizeColorsImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_quantizeColorsImage_inst>::DefineClass(env, "quantizeColorsImage", symbolTable);
}

void _Magick_quantizeColorsImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_quantizeColorsImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_quantizeColorsImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_quantizeColorsImage_templ::InstanceMethod("call",
        &_Magick_quantizeColorsImage_templ::_wrap_Magick_quantizeColorsImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_quantizeColorSpaceImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_quantizeColorSpaceImage_templ(const Napi::CallbackInfo &);
_Magick_quantizeColorSpaceImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_quantizeColorSpaceImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeColorSpaceImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_quantizeColorSpaceImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_quantizeColorSpaceImage_inst : public _Magick_quantizeColorSpaceImage_templ<_Magick_quantizeColorSpaceImage_inst> {
public:
  using _Magick_quantizeColorSpaceImage_templ::_Magick_quantizeColorSpaceImage_templ;
  virtual ~_Magick_quantizeColorSpaceImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_quantizeColorSpaceImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_quantizeColorSpaceImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: quantizeColorSpaceImage (_Magick_quantizeColorSpaceImage) */
// jsnapi_getclass
Napi::Function _Magick_quantizeColorSpaceImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_quantizeColorSpaceImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_quantizeColorSpaceImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_quantizeColorSpaceImage_inst>::DefineClass(env, "quantizeColorSpaceImage", symbolTable);
}

void _Magick_quantizeColorSpaceImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_quantizeColorSpaceImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_quantizeColorSpaceImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_quantizeColorSpaceImage_templ::InstanceMethod("call",
        &_Magick_quantizeColorSpaceImage_templ::_wrap_Magick_quantizeColorSpaceImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_quantizeDitherImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_quantizeDitherImage_templ(const Napi::CallbackInfo &);
_Magick_quantizeDitherImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_quantizeDitherImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeDitherImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeDitherImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_quantizeDitherImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_quantizeDitherImage_inst : public _Magick_quantizeDitherImage_templ<_Magick_quantizeDitherImage_inst> {
public:
  using _Magick_quantizeDitherImage_templ::_Magick_quantizeDitherImage_templ;
  virtual ~_Magick_quantizeDitherImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_quantizeDitherImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_quantizeDitherImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: quantizeDitherImage (_Magick_quantizeDitherImage) */
// jsnapi_getclass
Napi::Function _Magick_quantizeDitherImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_quantizeDitherImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_quantizeDitherImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_quantizeDitherImage_inst>::DefineClass(env, "quantizeDitherImage", symbolTable);
}

void _Magick_quantizeDitherImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_quantizeDitherImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_quantizeDitherImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_quantizeDitherImage_templ::InstanceMethod("callAsync",
        &_Magick_quantizeDitherImage_templ::_wrap_Magick_quantizeDitherImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_quantizeDitherImage_templ::InstanceMethod("call",
        &_Magick_quantizeDitherImage_templ::_wrap_Magick_quantizeDitherImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_quantizeTreeDepthImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_quantizeTreeDepthImage_templ(const Napi::CallbackInfo &);
_Magick_quantizeTreeDepthImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_quantizeTreeDepthImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeTreeDepthImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_quantizeTreeDepthImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_quantizeTreeDepthImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_quantizeTreeDepthImage_inst : public _Magick_quantizeTreeDepthImage_templ<_Magick_quantizeTreeDepthImage_inst> {
public:
  using _Magick_quantizeTreeDepthImage_templ::_Magick_quantizeTreeDepthImage_templ;
  virtual ~_Magick_quantizeTreeDepthImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_quantizeTreeDepthImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_quantizeTreeDepthImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: quantizeTreeDepthImage (_Magick_quantizeTreeDepthImage) */
// jsnapi_getclass
Napi::Function _Magick_quantizeTreeDepthImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_quantizeTreeDepthImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_quantizeTreeDepthImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_quantizeTreeDepthImage_inst>::DefineClass(env, "quantizeTreeDepthImage", symbolTable);
}

void _Magick_quantizeTreeDepthImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_quantizeTreeDepthImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_quantizeTreeDepthImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_quantizeTreeDepthImage_templ::InstanceMethod("callAsync",
        &_Magick_quantizeTreeDepthImage_templ::_wrap_Magick_quantizeTreeDepthImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_quantizeTreeDepthImage_templ::InstanceMethod("call",
        &_Magick_quantizeTreeDepthImage_templ::_wrap_Magick_quantizeTreeDepthImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_renderingIntentImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_renderingIntentImage_templ(const Napi::CallbackInfo &);
_Magick_renderingIntentImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_renderingIntentImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_renderingIntentImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_renderingIntentImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_renderingIntentImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_renderingIntentImage_inst : public _Magick_renderingIntentImage_templ<_Magick_renderingIntentImage_inst> {
public:
  using _Magick_renderingIntentImage_templ::_Magick_renderingIntentImage_templ;
  virtual ~_Magick_renderingIntentImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_renderingIntentImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_renderingIntentImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: renderingIntentImage (_Magick_renderingIntentImage) */
// jsnapi_getclass
Napi::Function _Magick_renderingIntentImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_renderingIntentImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_renderingIntentImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_renderingIntentImage_inst>::DefineClass(env, "renderingIntentImage", symbolTable);
}

void _Magick_renderingIntentImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_renderingIntentImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_renderingIntentImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_renderingIntentImage_templ::InstanceMethod("callAsync",
        &_Magick_renderingIntentImage_templ::_wrap_Magick_renderingIntentImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_renderingIntentImage_templ::InstanceMethod("call",
        &_Magick_renderingIntentImage_templ::_wrap_Magick_renderingIntentImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_resolutionUnitsImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_resolutionUnitsImage_templ(const Napi::CallbackInfo &);
_Magick_resolutionUnitsImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_resolutionUnitsImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_resolutionUnitsImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_resolutionUnitsImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_resolutionUnitsImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_resolutionUnitsImage_inst : public _Magick_resolutionUnitsImage_templ<_Magick_resolutionUnitsImage_inst> {
public:
  using _Magick_resolutionUnitsImage_templ::_Magick_resolutionUnitsImage_templ;
  virtual ~_Magick_resolutionUnitsImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_resolutionUnitsImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_resolutionUnitsImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: resolutionUnitsImage (_Magick_resolutionUnitsImage) */
// jsnapi_getclass
Napi::Function _Magick_resolutionUnitsImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_resolutionUnitsImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_resolutionUnitsImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_resolutionUnitsImage_inst>::DefineClass(env, "resolutionUnitsImage", symbolTable);
}

void _Magick_resolutionUnitsImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_resolutionUnitsImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_resolutionUnitsImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_resolutionUnitsImage_templ::InstanceMethod("callAsync",
        &_Magick_resolutionUnitsImage_templ::_wrap_Magick_resolutionUnitsImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_resolutionUnitsImage_templ::InstanceMethod("call",
        &_Magick_resolutionUnitsImage_templ::_wrap_Magick_resolutionUnitsImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_sceneImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_sceneImage_templ(const Napi::CallbackInfo &);
_Magick_sceneImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_sceneImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sceneImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sceneImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_sceneImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_sceneImage_inst : public _Magick_sceneImage_templ<_Magick_sceneImage_inst> {
public:
  using _Magick_sceneImage_templ::_Magick_sceneImage_templ;
  virtual ~_Magick_sceneImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_sceneImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_sceneImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: sceneImage (_Magick_sceneImage) */
// jsnapi_getclass
Napi::Function _Magick_sceneImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_sceneImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_sceneImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_sceneImage_inst>::DefineClass(env, "sceneImage", symbolTable);
}

void _Magick_sceneImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_sceneImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_sceneImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_sceneImage_templ::InstanceMethod("callAsync",
        &_Magick_sceneImage_templ::_wrap_Magick_sceneImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_sceneImage_templ::InstanceMethod("call",
        &_Magick_sceneImage_templ::_wrap_Magick_sceneImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_sizeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_sizeImage_templ(const Napi::CallbackInfo &);
_Magick_sizeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_sizeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sizeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_sizeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_sizeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_sizeImage_inst : public _Magick_sizeImage_templ<_Magick_sizeImage_inst> {
public:
  using _Magick_sizeImage_templ::_Magick_sizeImage_templ;
  virtual ~_Magick_sizeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_sizeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_sizeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: sizeImage (_Magick_sizeImage) */
// jsnapi_getclass
Napi::Function _Magick_sizeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_sizeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_sizeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_sizeImage_inst>::DefineClass(env, "sizeImage", symbolTable);
}

void _Magick_sizeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_sizeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_sizeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_sizeImage_templ::InstanceMethod("callAsync",
        &_Magick_sizeImage_templ::_wrap_Magick_sizeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_sizeImage_templ::InstanceMethod("call",
        &_Magick_sizeImage_templ::_wrap_Magick_sizeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_stripImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_stripImage_templ(const Napi::CallbackInfo &);
_Magick_stripImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_stripImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_stripImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_stripImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_stripImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_stripImage_inst : public _Magick_stripImage_templ<_Magick_stripImage_inst> {
public:
  using _Magick_stripImage_templ::_Magick_stripImage_templ;
  virtual ~_Magick_stripImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_stripImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_stripImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: stripImage (_Magick_stripImage) */
// jsnapi_getclass
Napi::Function _Magick_stripImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_stripImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_stripImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_stripImage_inst>::DefineClass(env, "stripImage", symbolTable);
}

void _Magick_stripImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_stripImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_stripImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_stripImage_templ::InstanceMethod("callAsync",
        &_Magick_stripImage_templ::_wrap_Magick_stripImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_stripImage_templ::InstanceMethod("call",
        &_Magick_stripImage_templ::_wrap_Magick_stripImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_subImageImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_subImageImage_templ(const Napi::CallbackInfo &);
_Magick_subImageImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_subImageImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_subImageImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_subImageImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_subImageImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_subImageImage_inst : public _Magick_subImageImage_templ<_Magick_subImageImage_inst> {
public:
  using _Magick_subImageImage_templ::_Magick_subImageImage_templ;
  virtual ~_Magick_subImageImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_subImageImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_subImageImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: subImageImage (_Magick_subImageImage) */
// jsnapi_getclass
Napi::Function _Magick_subImageImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_subImageImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_subImageImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_subImageImage_inst>::DefineClass(env, "subImageImage", symbolTable);
}

void _Magick_subImageImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_subImageImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_subImageImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_subImageImage_templ::InstanceMethod("callAsync",
        &_Magick_subImageImage_templ::_wrap_Magick_subImageImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_subImageImage_templ::InstanceMethod("call",
        &_Magick_subImageImage_templ::_wrap_Magick_subImageImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_subRangeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_subRangeImage_templ(const Napi::CallbackInfo &);
_Magick_subRangeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_subRangeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_subRangeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_subRangeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_subRangeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_subRangeImage_inst : public _Magick_subRangeImage_templ<_Magick_subRangeImage_inst> {
public:
  using _Magick_subRangeImage_templ::_Magick_subRangeImage_templ;
  virtual ~_Magick_subRangeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_subRangeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_subRangeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: subRangeImage (_Magick_subRangeImage) */
// jsnapi_getclass
Napi::Function _Magick_subRangeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_subRangeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_subRangeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_subRangeImage_inst>::DefineClass(env, "subRangeImage", symbolTable);
}

void _Magick_subRangeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_subRangeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_subRangeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_subRangeImage_templ::InstanceMethod("callAsync",
        &_Magick_subRangeImage_templ::_wrap_Magick_subRangeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_subRangeImage_templ::InstanceMethod("call",
        &_Magick_subRangeImage_templ::_wrap_Magick_subRangeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_textAntiAliasImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_textAntiAliasImage_templ(const Napi::CallbackInfo &);
_Magick_textAntiAliasImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_textAntiAliasImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_textAntiAliasImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_textAntiAliasImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_textAntiAliasImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_textAntiAliasImage_inst : public _Magick_textAntiAliasImage_templ<_Magick_textAntiAliasImage_inst> {
public:
  using _Magick_textAntiAliasImage_templ::_Magick_textAntiAliasImage_templ;
  virtual ~_Magick_textAntiAliasImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_textAntiAliasImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_textAntiAliasImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: textAntiAliasImage (_Magick_textAntiAliasImage) */
// jsnapi_getclass
Napi::Function _Magick_textAntiAliasImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_textAntiAliasImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_textAntiAliasImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_textAntiAliasImage_inst>::DefineClass(env, "textAntiAliasImage", symbolTable);
}

void _Magick_textAntiAliasImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_textAntiAliasImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_textAntiAliasImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_textAntiAliasImage_templ::InstanceMethod("callAsync",
        &_Magick_textAntiAliasImage_templ::_wrap_Magick_textAntiAliasImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_textAntiAliasImage_templ::InstanceMethod("call",
        &_Magick_textAntiAliasImage_templ::_wrap_Magick_textAntiAliasImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_typeImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_typeImage_templ(const Napi::CallbackInfo &);
_Magick_typeImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_typeImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_typeImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_typeImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_typeImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_typeImage_inst : public _Magick_typeImage_templ<_Magick_typeImage_inst> {
public:
  using _Magick_typeImage_templ::_Magick_typeImage_templ;
  virtual ~_Magick_typeImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_typeImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_typeImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: typeImage (_Magick_typeImage) */
// jsnapi_getclass
Napi::Function _Magick_typeImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_typeImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_typeImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_typeImage_inst>::DefineClass(env, "typeImage", symbolTable);
}

void _Magick_typeImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_typeImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_typeImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_typeImage_templ::InstanceMethod("callAsync",
        &_Magick_typeImage_templ::_wrap_Magick_typeImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_typeImage_templ::InstanceMethod("call",
        &_Magick_typeImage_templ::_wrap_Magick_typeImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_verboseImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_verboseImage_templ(const Napi::CallbackInfo &);
_Magick_verboseImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_verboseImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_verboseImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_verboseImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_verboseImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_verboseImage_inst : public _Magick_verboseImage_templ<_Magick_verboseImage_inst> {
public:
  using _Magick_verboseImage_templ::_Magick_verboseImage_templ;
  virtual ~_Magick_verboseImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_verboseImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_verboseImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: verboseImage (_Magick_verboseImage) */
// jsnapi_getclass
Napi::Function _Magick_verboseImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_verboseImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_verboseImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_verboseImage_inst>::DefineClass(env, "verboseImage", symbolTable);
}

void _Magick_verboseImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_verboseImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_verboseImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_verboseImage_templ::InstanceMethod("callAsync",
        &_Magick_verboseImage_templ::_wrap_Magick_verboseImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_verboseImage_templ::InstanceMethod("call",
        &_Magick_verboseImage_templ::_wrap_Magick_verboseImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _Magick_x11DisplayImage_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _Magick_x11DisplayImage_templ(const Napi::CallbackInfo &);
_Magick_x11DisplayImage_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_Magick_x11DisplayImage(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_x11DisplayImage_callAsync(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_Magick_x11DisplayImage_call(const Napi::CallbackInfo &);
virtual ~_Magick_x11DisplayImage_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _Magick_x11DisplayImage_inst : public _Magick_x11DisplayImage_templ<_Magick_x11DisplayImage_inst> {
public:
  using _Magick_x11DisplayImage_templ::_Magick_x11DisplayImage_templ;
  virtual ~_Magick_x11DisplayImage_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _Magick_x11DisplayImage_templ::PropertyDescriptor> &,
    std::map<std::string, _Magick_x11DisplayImage_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: x11DisplayImage (_Magick_x11DisplayImage) */
// jsnapi_getclass
Napi::Function _Magick_x11DisplayImage_inst::GetClass(Napi::Env env) {
  std::map<std::string, _Magick_x11DisplayImage_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_Magick_x11DisplayImage_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_Magick_x11DisplayImage_inst>::DefineClass(env, "x11DisplayImage", symbolTable);
}

void _Magick_x11DisplayImage_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _Magick_x11DisplayImage_templ::PropertyDescriptor> &members,
  std::map<std::string, _Magick_x11DisplayImage_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("callAsync");
  members.insert({
    "callAsync",
      _Magick_x11DisplayImage_templ::InstanceMethod("callAsync",
        &_Magick_x11DisplayImage_templ::_wrap_Magick_x11DisplayImage_callAsync,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("call");
  members.insert({
    "call",
      _Magick_x11DisplayImage_templ::InstanceMethod("call",
        &_Magick_x11DisplayImage_templ::_wrap_Magick_x11DisplayImage_call,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_prologue_template
template <typename SWIG_OBJ_WRAP>
class _std_coderInfoArray_templ : public SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP> {
public:
  _std_coderInfoArray_templ(const Napi::CallbackInfo &);
_std_coderInfoArray_templ(bool, const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_std_coderInfoArray__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_std_coderInfoArray__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_new_std_coderInfoArray__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_size(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_capacity(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_reserve(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_isEmpty(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_clear(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_add(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_get(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_std_coderInfoArray_set(const Napi::CallbackInfo &);
virtual ~_std_coderInfoArray_templ();
// jsnapi_class_epilogue_template
};
// jsnapi_class_instance
class _std_coderInfoArray_inst : public _std_coderInfoArray_templ<_std_coderInfoArray_inst> {
public:
  using _std_coderInfoArray_templ::_std_coderInfoArray_templ;
  virtual ~_std_coderInfoArray_inst() {
    
  };
  static void GetMembers(
    Napi::Env,
    std::map<std::string, _std_coderInfoArray_templ::PropertyDescriptor> &,
    std::map<std::string, _std_coderInfoArray_templ::PropertyDescriptor> &
    );
  static Napi::Function GetClass(Napi::Env);
};
/* Class: coderInfoArray (_std_coderInfoArray) */
// jsnapi_getclass
Napi::Function _std_coderInfoArray_inst::GetClass(Napi::Env env) {
  std::map<std::string, _std_coderInfoArray_templ::PropertyDescriptor> members, staticMembers;
  GetMembers(env, members, staticMembers);
  
  std::vector<_std_coderInfoArray_inst::PropertyDescriptor> symbolTable;
  for (auto it = members.begin(); it != members.end(); it++)
  symbolTable.push_back(it->second);
  for (auto it = staticMembers.begin(); it != staticMembers.end(); it++)
  symbolTable.push_back(it->second);
  
  return Napi::ObjectWrap<_std_coderInfoArray_inst>::DefineClass(env, "coderInfoArray", symbolTable);
}

void _std_coderInfoArray_inst::GetMembers(
  Napi::Env env,
  std::map<std::string, _std_coderInfoArray_templ::PropertyDescriptor> &members,
  std::map<std::string, _std_coderInfoArray_templ::PropertyDescriptor> &staticMembers
  ) {
  std::map<std::string, SWIG_NAPI_ObjectWrap_templ<SWIG_NAPI_ObjectWrap_inst>::PropertyDescriptor> baseMembers, baseStaticMembers;
  SWIG_NAPI_ObjectWrap_inst::GetMembers(env, baseMembers, baseStaticMembers);
  members.insert(baseMembers.begin(), baseMembers.end());
  staticMembers.insert(staticMembers.begin(), staticMembers.end());
  
  /* register wrapper functions */
  // jsnapi_register_member_function
  members.erase("size");
  members.insert({
    "size",
      _std_coderInfoArray_templ::InstanceMethod("size",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_size,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("capacity");
  members.insert({
    "capacity",
      _std_coderInfoArray_templ::InstanceMethod("capacity",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_capacity,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("reserve");
  members.insert({
    "reserve",
      _std_coderInfoArray_templ::InstanceMethod("reserve",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_reserve,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("isEmpty");
  members.insert({
    "isEmpty",
      _std_coderInfoArray_templ::InstanceMethod("isEmpty",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_isEmpty,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("clear");
  members.insert({
    "clear",
      _std_coderInfoArray_templ::InstanceMethod("clear",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_clear,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("add");
  members.insert({
    "add",
      _std_coderInfoArray_templ::InstanceMethod("add",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_add,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("get");
  members.insert({
    "get",
      _std_coderInfoArray_templ::InstanceMethod("get",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_get,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  // jsnapi_register_member_function
  members.erase("set");
  members.insert({
    "set",
      _std_coderInfoArray_templ::InstanceMethod("set",
        &_std_coderInfoArray_templ::_wrap_std_coderInfoArray_set,
        static_cast<napi_property_attributes>(napi_writable | napi_configurable))
    });
  
  /* add static class functions and variables */
  
}
// jsnapi_class_method_declaration
Napi::Value _wrap_coderInfoList__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_coderInfoList__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_coderInfoList__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_coderInfoList__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_appendImagesAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_appendImages__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_appendImagesAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_appendImages__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_forwardFourierTransformImageAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_forwardFourierTransformImage__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_forwardFourierTransformImageAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_forwardFourierTransformImage__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImagesAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImages__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImagesAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImages__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImagesAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImages__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImagesAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_readImages__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImagesAsync__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImages__SWIG_0(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImagesAsync__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImages__SWIG_1(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImagesAsync__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImages__SWIG_2(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImagesAsync__SWIG_3(const Napi::CallbackInfo &);
// jsnapi_class_method_declaration
Napi::Value _wrap_writeImages__SWIG_3(const Napi::CallbackInfo &);


// js_global_getter
Napi::Value exports_NAPI_VERSION_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(6));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickCoreSignature_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_unsigned_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long >(0xabacadabUL));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickPathExtent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(4096));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickTimeExtent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(26));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickEpsilon_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(1.0e-12));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickMaximumValue_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(1.79769313486231570E+308));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickMinimumValue_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(2.22507385850720140E-308));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickOffsetFormat_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"lld");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickSizeFormat_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"llu");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedClass_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedClass));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DirectClass_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DirectClass));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PseudoClass_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PseudoClass));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagickFalse_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagickFalse));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagickTrue_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagickTrue));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ForgetGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ForgetGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NorthWestGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NorthWestGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NorthGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NorthGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NorthEastGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NorthEastGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WestGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WestGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CenterGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CenterGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_EastGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::EastGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SouthWestGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SouthWestGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SouthGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SouthGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SouthEastGravity_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SouthEastGravity));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CMYColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CMYColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CMYKColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CMYKColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GRAYColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GRAYColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HCLColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HCLColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HCLpColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HCLpColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HSBColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HSBColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HSIColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HSIColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HSLColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HSLColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HSVColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HSVColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HWBColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HWBColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LabColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LabColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LCHColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LCHColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LCHabColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LCHabColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LCHuvColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LCHuvColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LogColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LogColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LMSColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LMSColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LuvColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LuvColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OHTAColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OHTAColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_Rec601YCbCrColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::Rec601YCbCrColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_Rec709YCbCrColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::Rec709YCbCrColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RGBColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RGBColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_scRGBColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::scRGBColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_sRGBColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::sRGBColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TransparentColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TransparentColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_xyYColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::xyYColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_XYZColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::XYZColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YCbCrColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YCbCrColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YCCColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YCCColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YDbDrColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YDbDrColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YIQColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YIQColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YPbPrColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YPbPrColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YUVColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YUVColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LinearGRAYColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LinearGRAYColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JzazbzColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JzazbzColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DisplayP3Colorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DisplayP3Colorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_Adobe98Colorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::Adobe98Colorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ProPhotoColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ProPhotoColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OklabColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OklabColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OklchColorspace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OklchColorspace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RedChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RedChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GrayChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GrayChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CyanChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CyanChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GreenChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GreenChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagentaChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagentaChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_aChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::aChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlueChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlueChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_bChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::bChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YellowChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YellowChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlackChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlackChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AlphaChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AlphaChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OpacityChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OpacityChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_IndexChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::IndexChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ReadMaskChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ReadMaskChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WriteMaskChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WriteMaskChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MetaChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MetaChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CompositeMaskChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CompositeMaskChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CompositeChannels_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CompositeChannels));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AllChannels_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AllChannels));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TrueAlphaChannel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TrueAlphaChannel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RGBChannels_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RGBChannels));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GrayChannels_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GrayChannels));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SyncChannels_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SyncChannels));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DefaultChannels_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DefaultChannels));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CharPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CharPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DoublePixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DoublePixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FloatPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FloatPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LongPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LongPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LongLongPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LongLongPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_QuantumPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::QuantumPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ShortPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ShortPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickMaxBufferExtent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(81920));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickMinBufferExtent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(16384));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedException_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedException));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WarningException_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WarningException));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ResourceLimitWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ResourceLimitWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TypeWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TypeWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OptionWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OptionWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DelegateWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DelegateWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MissingDelegateWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MissingDelegateWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CorruptImageWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CorruptImageWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FileOpenWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FileOpenWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlobWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlobWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StreamWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StreamWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CacheWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CacheWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CoderWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CoderWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FilterWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FilterWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModuleWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModuleWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DrawWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DrawWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImageWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImageWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WandWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WandWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RandomWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RandomWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_XServerWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::XServerWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MonitorWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MonitorWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RegistryWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RegistryWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ConfigureWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ConfigureWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PolicyWarning_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PolicyWarning));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ErrorException_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ErrorException));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ResourceLimitError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ResourceLimitError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TypeError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TypeError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OptionError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OptionError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DelegateError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DelegateError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MissingDelegateError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MissingDelegateError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CorruptImageError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CorruptImageError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FileOpenError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FileOpenError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlobError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlobError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StreamError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StreamError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CacheError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CacheError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CoderError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CoderError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FilterError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FilterError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModuleError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModuleError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DrawError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DrawError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImageError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImageError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WandError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WandError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RandomError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RandomError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_XServerError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::XServerError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MonitorError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MonitorError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RegistryError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RegistryError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ConfigureError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ConfigureError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PolicyError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PolicyError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FatalErrorException_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FatalErrorException));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ResourceLimitFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ResourceLimitFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TypeFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TypeFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OptionFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OptionFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DelegateFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DelegateFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MissingDelegateFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MissingDelegateFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CorruptImageFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CorruptImageFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FileOpenFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FileOpenFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlobFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlobFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StreamFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StreamFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CacheFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CacheFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CoderFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CoderFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FilterFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FilterFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModuleFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModuleFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DrawFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DrawFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImageFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImageFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WandFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WandFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RandomFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RandomFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_XServerFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::XServerFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MonitorFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MonitorFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RegistryFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RegistryFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ConfigureFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ConfigureFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PolicyFatalError_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PolicyFatalError));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedCompliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedCompliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoCompliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoCompliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CSSCompliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CSSCompliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SVGCompliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SVGCompliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_X11Compliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::X11Compliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_XPMCompliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::XPMCompliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MVGCompliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MVGCompliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AllCompliance_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AllCompliance));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedIlluminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedIlluminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AIlluminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AIlluminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BIlluminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BIlluminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CIlluminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CIlluminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_D50Illuminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::D50Illuminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_D55Illuminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::D55Illuminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_D65Illuminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::D65Illuminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_D75Illuminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::D75Illuminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_EIlluminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::EIlluminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_F2Illuminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::F2Illuminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_F7Illuminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::F7Illuminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_F11Illuminant_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::F11Illuminant));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AlphaCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AlphaCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AtopCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AtopCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlendCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlendCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlurCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlurCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BumpmapCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BumpmapCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ChangeMaskCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ChangeMaskCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ClearCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ClearCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ColorBurnCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ColorBurnCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ColorDodgeCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ColorDodgeCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ColorizeCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ColorizeCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyBlackCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyBlackCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyBlueCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyBlueCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyCyanCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyCyanCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyGreenCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyGreenCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyMagentaCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyMagentaCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyAlphaCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyAlphaCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyRedCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyRedCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CopyYellowCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CopyYellowCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DarkenCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DarkenCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DarkenIntensityCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DarkenIntensityCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DifferenceCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DifferenceCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DisplaceCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DisplaceCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DissolveCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DissolveCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DistortCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DistortCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DivideDstCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DivideDstCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DivideSrcCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DivideSrcCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DstAtopCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DstAtopCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DstCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DstCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DstInCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DstInCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DstOutCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DstOutCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DstOverCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DstOverCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExclusionCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExclusionCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HardLightCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HardLightCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HardMixCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HardMixCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HueCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HueCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_InCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::InCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_IntensityCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::IntensityCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LightenCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LightenCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LightenIntensityCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LightenIntensityCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LinearBurnCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LinearBurnCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LinearDodgeCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LinearDodgeCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LinearLightCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LinearLightCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LuminizeCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LuminizeCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MathematicsCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MathematicsCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MinusDstCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MinusDstCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MinusSrcCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MinusSrcCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModulateCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModulateCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModulusAddCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModulusAddCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModulusSubtractCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModulusSubtractCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MultiplyCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MultiplyCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OutCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OutCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OverCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OverCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OverlayCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OverlayCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PegtopLightCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PegtopLightCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PinLightCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PinLightCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PlusCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PlusCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ReplaceCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ReplaceCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SaturateCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SaturateCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ScreenCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ScreenCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SoftLightCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SoftLightCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SrcAtopCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SrcAtopCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SrcCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SrcCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SrcInCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SrcInCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SrcOutCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SrcOutCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SrcOverCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SrcOverCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThresholdCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThresholdCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_VividLightCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::VividLightCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_XorCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::XorCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StereoCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StereoCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FreezeCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FreezeCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_InterpolateCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::InterpolateCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NegateCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NegateCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ReflectCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ReflectCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SoftBurnCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SoftBurnCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SoftDodgeCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SoftDodgeCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StampCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StampCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RMSECompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RMSECompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SaliencyBlendCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SaliencyBlendCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SeamlessBlendCompositeOp_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SeamlessBlendCompositeOp));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_B44ACompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::B44ACompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_B44Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::B44Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BZipCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BZipCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DXT1Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DXT1Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DXT3Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DXT3Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DXT5Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DXT5Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FaxCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FaxCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_Group4Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::Group4Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JBIG1Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JBIG1Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JBIG2Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JBIG2Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JPEG2000Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JPEG2000Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JPEGCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JPEGCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LosslessJPEGCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LosslessJPEGCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LZMACompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LZMACompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LZWCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LZWCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PizCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PizCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_Pxr24Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::Pxr24Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RLECompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RLECompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ZipCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ZipCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ZipSCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ZipSCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ZstdCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ZstdCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WebPCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WebPCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DWAACompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DWAACompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DWABCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DWABCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BC7Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BC7Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BC5Compression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BC5Compression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LERCCompression_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LERCCompression));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UnityKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UnityKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GaussianKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GaussianKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DoGKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DoGKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LoGKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LoGKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlurKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlurKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CometKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CometKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BinomialKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BinomialKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LaplacianKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LaplacianKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SobelKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SobelKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FreiChenKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FreiChenKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RobertsKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RobertsKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PrewittKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PrewittKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CompassKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CompassKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_KirschKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::KirschKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DiamondKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DiamondKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SquareKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SquareKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RectangleKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RectangleKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OctagonKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OctagonKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DiskKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DiskKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PlusKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PlusKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CrossKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CrossKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RingKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RingKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PeaksKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PeaksKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_EdgesKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::EdgesKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CornersKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CornersKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DiagonalsKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DiagonalsKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LineEndsKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LineEndsKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LineJunctionsKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LineJunctionsKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RidgesKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RidgesKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ConvexHullKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ConvexHullKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThinSEKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThinSEKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SkeletonKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SkeletonKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ChebyshevKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ChebyshevKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ManhattanKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ManhattanKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OctagonalKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OctagonalKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_EuclideanKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::EuclideanKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UserDefinedKernel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UserDefinedKernel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RotatePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RotatePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ShearPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ShearPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RollPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RollPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HuePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HuePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SaturationPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SaturationPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BrightnessPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BrightnessPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GammaPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GammaPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SpiffPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SpiffPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DullPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DullPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GrayscalePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GrayscalePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_QuantizePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::QuantizePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DespecklePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DespecklePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ReduceNoisePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ReduceNoisePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AddNoisePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AddNoisePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SharpenPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SharpenPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlurPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlurPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThresholdPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThresholdPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_EdgeDetectPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::EdgeDetectPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SpreadPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SpreadPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SolarizePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SolarizePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ShadePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ShadePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RaisePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RaisePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SegmentPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SegmentPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SwirlPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SwirlPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImplodePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImplodePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WavePreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WavePreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OilPaintPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OilPaintPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CharcoalDrawingPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CharcoalDrawingPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JPEGPreview_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JPEGPreview));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UnrecognizedDispose_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UnrecognizedDispose));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedDispose_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedDispose));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoneDispose_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoneDispose));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BackgroundDispose_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BackgroundDispose));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PreviousDispose_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PreviousDispose));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedEndian_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedEndian));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LSBEndian_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LSBEndian));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MSBEndian_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MSBEndian));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedQuantumAlpha_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedQuantumAlpha));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AssociatedQuantumAlpha_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AssociatedQuantumAlpha));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DisassociatedQuantumAlpha_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DisassociatedQuantumAlpha));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedQuantumFormat_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedQuantumFormat));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FloatingPointQuantumFormat_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FloatingPointQuantumFormat));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SignedQuantumFormat_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SignedQuantumFormat));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UnsignedQuantumFormat_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UnsignedQuantumFormat));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AlphaQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AlphaQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BGRAQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BGRAQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BGROQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BGROQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BGRQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BGRQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlackQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlackQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlueQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlueQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CbYCrAQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CbYCrAQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CbYCrQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CbYCrQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CbYCrYQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CbYCrYQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CMYKAQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CMYKAQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CMYKOQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CMYKOQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CMYKQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CMYKQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CyanQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CyanQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GrayAlphaQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GrayAlphaQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GrayQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GrayQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GreenQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GreenQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_IndexAlphaQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::IndexAlphaQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_IndexQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::IndexQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagentaQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagentaQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OpacityQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OpacityQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RedQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RedQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RGBAQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RGBAQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RGBOQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RGBOQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RGBPadQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RGBPadQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RGBQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RGBQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_YellowQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::YellowQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MultispectralQuantum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MultispectralQuantum));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PointFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PointFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BoxFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BoxFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TriangleFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TriangleFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HermiteFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HermiteFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HannFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HannFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HammingFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HammingFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlackmanFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlackmanFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GaussianFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GaussianFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_QuadraticFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::QuadraticFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CubicFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CubicFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CatromFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CatromFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MitchellFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MitchellFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JincFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JincFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SincFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SincFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SincFastFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SincFastFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_KaiserFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::KaiserFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WelchFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WelchFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ParzenFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ParzenFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BohmanFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BohmanFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BartlettFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BartlettFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LagrangeFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LagrangeFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LanczosFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LanczosFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LanczosSharpFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LanczosSharpFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_Lanczos2Filter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::Lanczos2Filter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_Lanczos2SharpFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::Lanczos2SharpFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RobidouxFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RobidouxFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RobidouxSharpFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RobidouxSharpFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CosineFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CosineFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SplineFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SplineFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LanczosRadiusFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LanczosRadiusFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CubicSplineFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CubicSplineFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SentinelFilter_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SentinelFilter));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BilevelType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BilevelType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GrayscaleType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GrayscaleType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GrayscaleAlphaType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GrayscaleAlphaType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PaletteType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PaletteType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PaletteAlphaType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PaletteAlphaType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TrueColorType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TrueColorType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TrueColorAlphaType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TrueColorAlphaType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ColorSeparationType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ColorSeparationType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ColorSeparationAlphaType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ColorSeparationAlphaType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OptimizeType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OptimizeType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PaletteBilevelAlphaType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PaletteBilevelAlphaType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LineInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LineInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PlaneInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PlaneInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PartitionInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PartitionInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GIFInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GIFInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_JPEGInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::JPEGInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PNGInterlace_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PNGInterlace));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TopLeftOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TopLeftOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TopRightOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TopRightOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BottomRightOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BottomRightOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BottomLeftOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BottomLeftOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LeftTopOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LeftTopOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RightTopOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RightTopOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RightBottomOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RightBottomOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LeftBottomOrientation_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LeftBottomOrientation));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedResolution_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedResolution));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PixelsPerInchResolution_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PixelsPerInchResolution));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PixelsPerCentimeterResolution_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PixelsPerCentimeterResolution));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedTransmitType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedTransmitType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FileTransmitType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FileTransmitType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlobTransmitType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlobTransmitType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StreamTransmitType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StreamTransmitType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImageTransmitType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImageTransmitType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NormalStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NormalStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UltraCondensedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UltraCondensedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExtraCondensedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExtraCondensedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CondensedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CondensedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SemiCondensedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SemiCondensedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SemiExpandedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SemiExpandedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExpandedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExpandedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExtraExpandedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExtraExpandedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UltraExpandedStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UltraExpandedStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AnyStretch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AnyStretch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedStyle_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedStyle));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NormalStyle_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NormalStyle));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ItalicStyle_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ItalicStyle));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ObliqueStyle_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ObliqueStyle));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AnyStyle_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AnyStyle));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BoldStyle_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BoldStyle));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedAlign_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedAlign));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LeftAlign_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LeftAlign));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CenterAlign_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CenterAlign));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RightAlign_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RightAlign));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedDecoration_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedDecoration));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoDecoration_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoDecoration));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UnderlineDecoration_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UnderlineDecoration));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OverlineDecoration_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OverlineDecoration));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LineThroughDecoration_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LineThroughDecoration));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedDirection_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedDirection));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RightToLeftDirection_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RightToLeftDirection));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LeftToRightDirection_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LeftToRightDirection));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TopToBottomDirection_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TopToBottomDirection));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedGradient_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedGradient));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LinearGradient_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LinearGradient));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RadialGradient_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RadialGradient));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AlphaPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AlphaPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ArcPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ArcPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BezierPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BezierPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CirclePrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CirclePrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ColorPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ColorPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_EllipsePrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::EllipsePrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImagePrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImagePrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LinePrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LinePrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PathPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PathPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PointPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PointPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PolygonPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PolygonPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PolylinePrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PolylinePrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RectanglePrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RectanglePrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RoundRectanglePrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RoundRectanglePrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TextPrimitive_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TextPrimitive));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedReference_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedReference));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GradientReference_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GradientReference));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedWordBreakType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedWordBreakType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NormalWordBreakType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NormalWordBreakType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BreakWordBreakType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BreakWordBreakType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedCache_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedCache));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DiskCache_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DiskCache));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DistributedCache_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DistributedCache));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MapCache_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MapCache));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MemoryCache_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MemoryCache));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PingCache_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PingCache));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AbsoluteErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AbsoluteErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FuzzErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FuzzErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MeanAbsoluteErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MeanAbsoluteErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MeanErrorPerPixelErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MeanErrorPerPixelErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MeanSquaredErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MeanSquaredErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NormalizedCrossCorrelationErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NormalizedCrossCorrelationErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PeakAbsoluteErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PeakAbsoluteErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PeakSignalToNoiseRatioErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PeakSignalToNoiseRatioErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PerceptualHashErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PerceptualHashErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RootMeanSquaredErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RootMeanSquaredErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StructuralSimilarityErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StructuralSimilarityErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StructuralDissimilarityErrorMetric_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StructuralDissimilarityErrorMetric));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedFormatType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedFormatType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImplicitFormatType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImplicitFormatType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExplicitFormatType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExplicitFormatType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AddComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AddComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ConjugateComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ConjugateComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DivideComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DivideComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagnitudePhaseComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagnitudePhaseComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MultiplyComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MultiplyComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RealImaginaryComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RealImaginaryComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SubtractComplexOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SubtractComplexOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickLogFilename_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"log.xml");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedEvents_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedEvents));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoEvents_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoEvents));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AccelerateEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AccelerateEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AnnotateEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AnnotateEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BlobEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BlobEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CacheEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CacheEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CoderEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CoderEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ConfigureEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ConfigureEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DeprecateEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DeprecateEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DrawEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DrawEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExceptionEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExceptionEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImageEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImageEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LocaleEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LocaleEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModuleEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModuleEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PixelEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PixelEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PolicyEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PolicyEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ResourceEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ResourceEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TraceEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TraceEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TransformEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TransformEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UserEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UserEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WandEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WandEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_X11Event_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::X11Event));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CommandEvent_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CommandEvent));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AllEvents_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AllEvents));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickPackageName_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"ImageMagick");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickCopyright_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"(C) 1999 ImageMagick Studio LLC");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickLibVersion_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(0x711));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickLibVersionText_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"7.1.1");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickLibAddendum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"-19");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickLibInterface_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(10));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickLibMinInterface_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(10));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickPlatform_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"x86_64");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickppLibVersionText_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"7.1.1");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickppLibAddendum_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"-19");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickppLibInterface_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(5));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickppLibMinInterface_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(5));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickGitRevision_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"ff509f4c0:20230930");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickReleaseDate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"2023-09-30");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickAuthoritativeLicense_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"https://imagemagick.org/script/license.php");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickAuthoritativeURL_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"https://imagemagick.org");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickHomeURL_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"file:///home/mmom/src/node-magickwand/lib/binding/linux-x64/ImageMagick/share/doc/ImageMagick-7/index.html");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickQuantumDepth_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"Q16");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickQuantumRange_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"65535");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickHDRISupport_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"-HDRI");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickVersion_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)"ImageMagick 7.1.1-19 Q16-HDRI x86_64 ff509f4c0:20230930 https://imagemagick.org");
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_function
Napi::Value _wrap_GetMagickCopyright(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetMagickCopyright.");
    }
    
    
    
    
    
    
    {
      try {
        result = (char *)MagickCore::GetMagickCopyright();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_GetMagickDelegates(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetMagickDelegates.");
    }
    
    
    
    
    
    
    {
      try {
        result = (char *)MagickCore::GetMagickDelegates();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_GetMagickFeatures(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetMagickFeatures.");
    }
    
    
    
    
    
    
    {
      try {
        result = (char *)MagickCore::GetMagickFeatures();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_GetMagickLicense(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetMagickLicense.");
    }
    
    
    
    
    
    
    {
      try {
        result = (char *)MagickCore::GetMagickLicense();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_GetMagickPackageName(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetMagickPackageName.");
    }
    
    
    
    
    
    
    {
      try {
        result = (char *)MagickCore::GetMagickPackageName();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_GetMagickReleaseDate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetMagickReleaseDate.");
    }
    
    
    
    
    
    
    {
      try {
        result = (char *)MagickCore::GetMagickReleaseDate();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_getter
Napi::Value MagickCore_MagickImageCoderModule_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagickImageCoderModule));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagickImageFilterModule_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagickImageFilterModule));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedCLDeviceType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedCLDeviceType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CpuCLDeviceType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CpuCLDeviceType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GpuCLDeviceType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GpuCLDeviceType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ColorspaceValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ColorspaceValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CompareValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CompareValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CompositeValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CompositeValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ConvertValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ConvertValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FormatsDiskValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FormatsDiskValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FormatsMapValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FormatsMapValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FormatsMemoryValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FormatsMemoryValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_IdentifyValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::IdentifyValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImportExportValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImportExportValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MontageValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MontageValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StreamValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StreamValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagickValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagickValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AllValidate_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AllValidate));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedPolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedPolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CoderPolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CoderPolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DelegatePolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DelegatePolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FilterPolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FilterPolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PathPolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PathPolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ResourcePolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ResourcePolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SystemPolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SystemPolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CachePolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CachePolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModulePolicyDomain_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModulePolicyDomain));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedPolicyRights_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedPolicyRights));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NoPolicyRights_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NoPolicyRights));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ReadPolicyRights_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ReadPolicyRights));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WritePolicyRights_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WritePolicyRights));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExecutePolicyRights_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExecutePolicyRights));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AllPolicyRights_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AllPolicyRights));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_function
Napi::Value _wrap_GetPolicyValue(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  char *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetPolicyValue.");
    }
    
    res1 = SWIG_AsCharPtrAndSize(info[0], &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GetPolicyValue" "', argument " "1"" of type '" "char const *""'");
    }
    arg1 = reinterpret_cast< char * >(buf1);
    
    
    
    
    {
      try {
        result = (char *)MagickCore::GetPolicyValue((char const *)arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_GetPolicyList(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *arg1 = (char *) 0 ;
  size_t *arg2 = (size_t *) 0 ;
  MagickCore::ExceptionInfo *arg3 = (MagickCore::ExceptionInfo *) 0 ;
  MagickCore::ExceptionInfo _global_error ;
  size_t _global_number_policies ;
  char **result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_GetPolicyList.");
    }
    
    arg1 = const_cast<char*>("");
    arg2 = &_global_number_policies;
    arg3 = &_global_error;
    _global_error.severity = MagickCore::ExceptionType::UndefinedException;
    
    
    
    
    
    {
      try {
        result = (char **)MagickCore::GetPolicyList((char const *)arg1,arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    {
      Napi::Array array = Napi::Array::New(env, _global_number_policies);
      if (result) {
        char **policies = reinterpret_cast<char**>(result);
        for (size_t i = 0; i < _global_number_policies; i++) {
          Napi::String s = Napi::String::New(env, policies[i]);
          array.Set(i, s);
        }
      }
      jsresult = array;
    }
    if (_global_error.severity != MagickCore::ExceptionType::UndefinedException) {
      do {
        SWIG_NAPI_Raise(env, MagickCore::GetExceptionMessage(_global_error.error_number)); SWIG_fail; 
      } while (0);
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_IsRightsAuthorized(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  MagickCore::PolicyDomain arg1 ;
  MagickCore::PolicyRights arg2 ;
  char *arg3 = (char *) 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int res3 ;
  char *buf3 = 0 ;
  int alloc3 = 0 ;
  MagickCore::MagickBooleanType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_IsRightsAuthorized.");
    }
    
    ecode1 = SWIG_AsVal_int(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "IsRightsAuthorized" "', argument " "1"" of type '" "MagickCore::PolicyDomain""'");
    } 
    arg1 = static_cast< MagickCore::PolicyDomain >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IsRightsAuthorized" "', argument " "2"" of type '" "MagickCore::PolicyRights""'");
    } 
    arg2 = static_cast< MagickCore::PolicyRights >(val2);res3 = SWIG_AsCharPtrAndSize(info[2], &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "IsRightsAuthorized" "', argument " "3"" of type '" "char const *""'");
    }
    arg3 = reinterpret_cast< char * >(buf3);
    
    
    
    
    {
      try {
        result = (MagickCore::MagickBooleanType)MagickCore::IsRightsAuthorized(arg1,arg2,(char const *)arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    {
      jsresult = Napi::Boolean::New(env, result);
    }
    
    if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_ListPolicyInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  FILE *arg1 = (FILE *) 0 ;
  MagickCore::ExceptionInfo *arg2 = (MagickCore::ExceptionInfo *) 0 ;
  MagickCore::ExceptionInfo _global_error ;
  MagickCore::MagickBooleanType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_ListPolicyInfo.");
    }
    
    arg1 = SWIG_NULLPTR;
    arg2 = &_global_error;
    _global_error.severity = MagickCore::ExceptionType::UndefinedException;
    
    
    
    
    
    {
      try {
        result = (MagickCore::MagickBooleanType)MagickCore::ListPolicyInfo(arg1,arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    {
      jsresult = Napi::Boolean::New(env, result);
    }
    if (_global_error.severity != MagickCore::ExceptionType::UndefinedException) {
      do {
        SWIG_NAPI_Raise(env, MagickCore::GetExceptionMessage(_global_error.error_number)); SWIG_fail; 
      } while (0);
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_SetMagickSecurityPolicy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *arg1 = (char *) 0 ;
  MagickCore::ExceptionInfo *arg2 = (MagickCore::ExceptionInfo *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  MagickCore::ExceptionInfo _global_error ;
  MagickCore::MagickBooleanType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_SetMagickSecurityPolicy.");
    }
    
    arg2 = &_global_error;
    _global_error.severity = MagickCore::ExceptionType::UndefinedException;
    res1 = SWIG_AsCharPtrAndSize(info[0], &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SetMagickSecurityPolicy" "', argument " "1"" of type '" "char const *""'");
    }
    arg1 = reinterpret_cast< char * >(buf1);
    
    
    
    
    {
      try {
        result = (MagickCore::MagickBooleanType)MagickCore::SetMagickSecurityPolicy((char const *)arg1,arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    {
      jsresult = Napi::Boolean::New(env, result);
    }
    if (_global_error.severity != MagickCore::ExceptionType::UndefinedException) {
      do {
        SWIG_NAPI_Raise(env, MagickCore::GetExceptionMessage(_global_error.error_number)); SWIG_fail; 
      } while (0);
    }
    
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_SetMagickSecurityPolicyValue(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  MagickCore::PolicyDomain arg1 ;
  char *arg2 = (char *) 0 ;
  char *arg3 = (char *) 0 ;
  MagickCore::ExceptionInfo *arg4 = (MagickCore::ExceptionInfo *) 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int res2 ;
  char *buf2 = 0 ;
  int alloc2 = 0 ;
  int res3 ;
  char *buf3 = 0 ;
  int alloc3 = 0 ;
  MagickCore::ExceptionInfo _global_error ;
  MagickCore::MagickBooleanType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_SetMagickSecurityPolicyValue.");
    }
    
    arg4 = &_global_error;
    _global_error.severity = MagickCore::ExceptionType::UndefinedException;
    ecode1 = SWIG_AsVal_int(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "SetMagickSecurityPolicyValue" "', argument " "1"" of type '" "MagickCore::PolicyDomain""'");
    } 
    arg1 = static_cast< MagickCore::PolicyDomain >(val1);res2 = SWIG_AsCharPtrAndSize(info[1], &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SetMagickSecurityPolicyValue" "', argument " "2"" of type '" "char const *""'");
    }
    arg2 = reinterpret_cast< char * >(buf2);res3 = SWIG_AsCharPtrAndSize(info[2], &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "SetMagickSecurityPolicyValue" "', argument " "3"" of type '" "char const *""'");
    }
    arg3 = reinterpret_cast< char * >(buf3);
    
    
    
    
    {
      try {
        result = (MagickCore::MagickBooleanType)MagickCore::SetMagickSecurityPolicyValue(arg1,(char const *)arg2,(char const *)arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    {
      jsresult = Napi::Boolean::New(env, result);
    }
    if (_global_error.severity != MagickCore::ExceptionType::UndefinedException) {
      do {
        SWIG_NAPI_Raise(env, MagickCore::GetExceptionMessage(_global_error.error_number)); SWIG_fail; 
      } while (0);
    }
    
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
  if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
  
#endif
  return Napi::Value();
}


// js_global_getter
Napi::Value MagickCore_UndefinedRegistryType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedRegistryType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImageRegistryType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImageRegistryType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImageInfoRegistryType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImageInfoRegistryType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StringRegistryType_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StringRegistryType));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AreaResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AreaResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DiskResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DiskResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_FileResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::FileResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HeightResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HeightResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MapResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MapResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MemoryResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MemoryResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThreadResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThreadResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThrottleResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThrottleResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TimeResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TimeResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_WidthResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::WidthResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ListLengthResource_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ListLengthResource));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AbsEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AbsEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AddEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AddEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AddModulusEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AddModulusEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_AndEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::AndEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CosineEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CosineEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_DivideEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::DivideEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExponentialEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExponentialEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GaussianNoiseEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GaussianNoiseEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImpulseNoiseEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImpulseNoiseEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LaplacianNoiseEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LaplacianNoiseEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LeftShiftEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LeftShiftEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LogEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LogEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MaxEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MaxEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MeanEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MeanEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MedianEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MedianEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MinEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MinEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MultiplicativeNoiseEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MultiplicativeNoiseEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MultiplyEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MultiplyEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_OrEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::OrEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PoissonNoiseEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PoissonNoiseEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PowEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PowEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RightShiftEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RightShiftEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RootMeanSquareEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RootMeanSquareEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SetEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SetEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SineEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SineEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SubtractEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SubtractEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SumEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SumEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThresholdBlackEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThresholdBlackEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThresholdEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThresholdEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ThresholdWhiteEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ThresholdWhiteEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UniformNoiseEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UniformNoiseEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_XorEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::XorEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_InverseLogEvaluateOperator_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::InverseLogEvaluateOperator));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GradientStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GradientStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MaximumStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MaximumStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MeanStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MeanStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MedianStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MedianStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MinimumStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MinimumStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ModeStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ModeStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_NonpeakStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::NonpeakStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RootMeanSquareStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RootMeanSquareStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_StandardDeviationStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::StandardDeviationStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ContrastStatistic_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ContrastStatistic));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MagickPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MagickPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RootPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RootPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_HeadPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::HeadPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_TailPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::TailPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BasePath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BasePath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ExtensionPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ExtensionPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SubimagePath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SubimagePath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_CanonicalPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::CanonicalPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_SubcanonicalPath_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::SubcanonicalPath));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_BasePathSansCompressExtension_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::BasePathSansCompressExtension));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UndefinedNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UndefinedNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_UniformNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::UniformNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_GaussianNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::GaussianNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_MultiplicativeGaussianNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::MultiplicativeGaussianNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_ImpulseNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::ImpulseNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_LaplacianNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::LaplacianNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_PoissonNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::PoissonNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value MagickCore_RandomNoise_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(MagickCore::RandomNoise));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_getter
Napi::Value exports_MagickWandSignature_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_unsigned_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long >(0xabacadabUL));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_function
Napi::Value _wrap_MagickSetSecurityPolicy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  MagickWand *arg1 = (MagickWand *) 0 ;
  char *arg2 = (char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 ;
  char *buf2 = 0 ;
  int alloc2 = 0 ;
  MagickCore::MagickBooleanType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_MagickSetSecurityPolicy.");
    }
    
    res1 = SWIG_ConvertPtr(info[0], &argp1,SWIGTYPE_p_MagickWand, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MagickSetSecurityPolicy" "', argument " "1"" of type '" "MagickWand *""'"); 
    }
    arg1 = reinterpret_cast< MagickWand * >(argp1);res2 = SWIG_AsCharPtrAndSize(info[1], &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "MagickSetSecurityPolicy" "', argument " "2"" of type '" "char const *""'");
    }
    arg2 = reinterpret_cast< char * >(buf2);
    
    
    
    
    {
      try {
        result = (MagickCore::MagickBooleanType)MagickCore::MagickSetSecurityPolicy(arg1,(char const *)arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    {
      jsresult = Napi::Boolean::New(env, result);
    }
    
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_DisableOpenCL(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_DisableOpenCL.");
    }
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::DisableOpenCL();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_EnableOpenCL(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_EnableOpenCL.");
    }
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)Magick::EnableOpenCL();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_SetRandomSeed(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  unsigned long arg1 ;
  unsigned long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_SetRandomSeed.");
    }
    
    ecode1 = SWIG_AsVal_unsigned_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "SetRandomSeed" "', argument " "1"" of type '" "unsigned long""'");
    } 
    arg1 = static_cast< unsigned long >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SetRandomSeed(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_SetSecurityPolicy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_SetSecurityPolicy.");
    }
    
    {
      {
        std::string *ptr = (std::string *)0;
        res1 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res1)) {
          SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SetSecurityPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SetSecurityPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
        }
        arg1 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)Magick::SetSecurityPolicy((std::string const &)*arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    if (SWIG_IsNewObj(res1)) delete arg1;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res1)) delete arg1;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res1)) delete arg1;
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Blob__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Blob *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Blob__SWIG_0.");
  }
  {
    try {
      result = (Magick::Blob *)new Magick::Blob();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Blob__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  void *arg1 = (void *) 0 ;
  size_t arg2 ;
  Magick::Blob *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Blob__SWIG_1.");
  }
  {
    {
      if (info[0].IsBuffer()) {
        Napi::Buffer<char> buf = info[0].As<Napi::Buffer<char>>();
        arg1 = reinterpret_cast<void *>(buf.Data());
        arg2 = buf.ByteLength();
      } else {
        SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_Blob', argument is not a Buffer");
      }
    }
  }
  {
    try {
      result = (Magick::Blob *)new Magick::Blob((void const *)arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Blob__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Blob *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Blob *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Blob__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Blob,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Blob" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Blob" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
    try {
      result = (Magick::Blob *)new Magick::Blob((Magick::Blob const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Blob_templ<SWIG_OBJ_WRAP>::_Magick_Blob_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Blob;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Blob__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Blob__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Blob__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Blob__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Blob__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Blob__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Blob");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Blob_templ<SWIG_OBJ_WRAP>::_Magick_Blob_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Blob_templ<SWIG_OBJ_WRAP>::~_Magick_Blob_templ() {
  auto arg1 = reinterpret_cast<Magick::Blob *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Blob *arg1 = (Magick::Blob *) 0 ;
  Magick::Blob *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Blob *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_clone" "', argument " "1"" of type '" "Magick::Blob *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Blob * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Blob_clone" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Blob_clone" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Blob *) &(arg1)->operator =((Magick::Blob const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Blob, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_base64Async__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Blob *arg1 = (Magick::Blob *) 0 ;
    std::string arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->base64(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_base64" "', argument " "1"" of type '" "Magick::Blob *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Blob_base64" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_base64Async__SWIG_0.");
  }
  context = new _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_base64__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Blob *arg1 = (Magick::Blob *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_base64" "', argument " "1"" of type '" "Magick::Blob *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Blob_base64" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->base64(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_base64Async__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Blob *arg1 = (Magick::Blob *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Blob const *)arg1)->base64();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_base64" "', argument " "1"" of type '" "Magick::Blob const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Blob * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_base64Async__SWIG_1.");
  }
  context = new _Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Blob__wrap_Magick_Blob_base64Async__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Blob__wrap_Magick_Blob_base64Async(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Blob_base64Async__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Blob_base64Async__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Blob_base64Async__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Blob_base64Async__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function base64Async.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_base64__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Blob *arg1 = (Magick::Blob *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_base64" "', argument " "1"" of type '" "Magick::Blob const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Blob * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Blob const *)arg1)->base64();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Blob__wrap_Magick_Blob_base64(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Blob_base64__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Blob_base64__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Blob_base64__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Blob_base64__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function base64.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_lengthAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Blob__wrap_Magick_Blob_lengthAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Blob *arg1 = (Magick::Blob *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Blob__wrap_Magick_Blob_lengthAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Blob const *)arg1)->length();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_length" "', argument " "1"" of type '" "Magick::Blob const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Blob * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Blob__wrap_Magick_Blob_lengthAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_lengthAsync.");
  }
  context = new _Magick_Blob__wrap_Magick_Blob_lengthAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Blob__wrap_Magick_Blob_lengthAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_length(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Blob *arg1 = (Magick::Blob *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_length.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_length" "', argument " "1"" of type '" "Magick::Blob const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Blob * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Blob const *)arg1)->length();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_updateAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Blob__wrap_Magick_Blob_updateAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Blob *arg1 = (Magick::Blob *) 0 ;
    void *arg2 = (void *) 0 ;
    size_t arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Blob__wrap_Magick_Blob_updateAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->update((void const *)arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_update" "', argument " "1"" of type '" "Magick::Blob *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
        {
          if (info[0].IsBuffer()) {
            Napi::Buffer<char> buf = info[0].As<Napi::Buffer<char>>();
            arg2 = reinterpret_cast<void *>(buf.Data());
            arg3 = buf.ByteLength();
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Blob_update', argument is not a Buffer");
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Blob__wrap_Magick_Blob_updateAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_updateAsync.");
  }
  context = new _Magick_Blob__wrap_Magick_Blob_updateAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Blob__wrap_Magick_Blob_updateAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_update(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Blob *arg1 = (Magick::Blob *) 0 ;
  void *arg2 = (void *) 0 ;
  size_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_update.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_update" "', argument " "1"" of type '" "Magick::Blob *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
      {
        if (info[0].IsBuffer()) {
          Napi::Buffer<char> buf = info[0].As<Napi::Buffer<char>>();
          arg2 = reinterpret_cast<void *>(buf.Data());
          arg3 = buf.ByteLength();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Blob_update', argument is not a Buffer");
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->update((void const *)arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_dataAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Blob__wrap_Magick_Blob_dataAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Blob *arg1 = (Magick::Blob *) 0 ;
    void **arg2 = (void **) 0 ;
    size_t *arg3 = (size_t *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *temp_data2 ;
    size_t temp_len2 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Blob__wrap_Magick_Blob_dataAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick_Magick_Blob_data((Magick::Blob const *)arg1,arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (*arg2 != SWIG_NULLPTR) {
          Napi::Buffer<char> buf = Napi::Buffer<char>::Copy(env, reinterpret_cast<char *>(*arg2), *arg3);
          NAPI_CHECK_RESULT(buf.As<Napi::Value>(), jsresult);
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg2 = &temp_data2;
        arg3 = &temp_len2;
      }
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_data" "', argument " "1"" of type '" "Magick::Blob const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Blob * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Blob__wrap_Magick_Blob_dataAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_dataAsync.");
  }
  context = new _Magick_Blob__wrap_Magick_Blob_dataAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Blob__wrap_Magick_Blob_dataAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Blob_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Blob_data(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Blob *arg1 = (Magick::Blob *) 0 ;
  void **arg2 = (void **) 0 ;
  size_t *arg3 = (size_t *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *temp_data2 ;
  size_t temp_len2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Blob_data.");
    }
    
    {
      arg2 = &temp_data2;
      arg3 = &temp_len2;
    }
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Blob_data" "', argument " "1"" of type '" "Magick::Blob const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Blob * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick_Magick_Blob_data((Magick::Blob const *)arg1,arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (*arg2 != SWIG_NULLPTR) {
        Napi::Buffer<char> buf = Napi::Buffer<char>::Copy(env, reinterpret_cast<char *>(*arg2), *arg3);
        NAPI_CHECK_RESULT(buf.As<Napi::Value>(), jsresult);
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::Color const &)*arg1,(Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::Color const &)*arg1,(Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gt__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gt" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gt" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >((Magick::Color const &)*arg1,(Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lt__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lt" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lt" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <((Magick::Color const &)*arg1,(Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gte__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gte" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gte" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >=((Magick::Color const &)*arg1,(Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lte__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lte" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "1"" of type '" "Magick::Color const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lte" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <=((Magick::Color const &)*arg1,(Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_getter
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::Magick_Color_CMYKPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(Magick::Color::CMYKPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_getter
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::Magick_Color_CMYKAPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(Magick::Color::CMYKAPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_getter
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::Magick_Color_RGBPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(Magick::Color::RGBPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_getter
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::Magick_Color_RGBAPixel_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(Magick::Color::RGBAPixel));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Color__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Color__SWIG_0.");
  }
  {
    try {
      result = (Magick::Color *)new Magick::Color();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Color__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Quantum arg1 ;
  Magick::Quantum arg2 ;
  Magick::Quantum arg3 ;
  float val1 ;
  int ecode1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  float val3 ;
  int ecode3 = 0 ;
  Magick::Color *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Color__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_float(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Color" "', argument " "1"" of type '" "Magick::Quantum""'");
  } 
  arg1 = static_cast< Magick::Quantum >(val1);ecode2 = SWIG_AsVal_float(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Color" "', argument " "2"" of type '" "Magick::Quantum""'");
  } 
  arg2 = static_cast< Magick::Quantum >(val2);ecode3 = SWIG_AsVal_float(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_Color" "', argument " "3"" of type '" "Magick::Quantum""'");
  } 
  arg3 = static_cast< Magick::Quantum >(val3);{
    try {
      result = (Magick::Color *)new Magick::Color(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Color__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Quantum arg1 ;
  Magick::Quantum arg2 ;
  Magick::Quantum arg3 ;
  Magick::Quantum arg4 ;
  float val1 ;
  int ecode1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  float val3 ;
  int ecode3 = 0 ;
  float val4 ;
  int ecode4 = 0 ;
  Magick::Color *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Color__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_float(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Color" "', argument " "1"" of type '" "Magick::Quantum""'");
  } 
  arg1 = static_cast< Magick::Quantum >(val1);ecode2 = SWIG_AsVal_float(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Color" "', argument " "2"" of type '" "Magick::Quantum""'");
  } 
  arg2 = static_cast< Magick::Quantum >(val2);ecode3 = SWIG_AsVal_float(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_Color" "', argument " "3"" of type '" "Magick::Quantum""'");
  } 
  arg3 = static_cast< Magick::Quantum >(val3);ecode4 = SWIG_AsVal_float(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_Color" "', argument " "4"" of type '" "Magick::Quantum""'");
  } 
  arg4 = static_cast< Magick::Quantum >(val4);{
    try {
      result = (Magick::Color *)new Magick::Color(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Color__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Quantum arg1 ;
  Magick::Quantum arg2 ;
  Magick::Quantum arg3 ;
  Magick::Quantum arg4 ;
  Magick::Quantum arg5 ;
  float val1 ;
  int ecode1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  float val3 ;
  int ecode3 = 0 ;
  float val4 ;
  int ecode4 = 0 ;
  float val5 ;
  int ecode5 = 0 ;
  Magick::Color *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Color__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_float(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Color" "', argument " "1"" of type '" "Magick::Quantum""'");
  } 
  arg1 = static_cast< Magick::Quantum >(val1);ecode2 = SWIG_AsVal_float(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Color" "', argument " "2"" of type '" "Magick::Quantum""'");
  } 
  arg2 = static_cast< Magick::Quantum >(val2);ecode3 = SWIG_AsVal_float(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_Color" "', argument " "3"" of type '" "Magick::Quantum""'");
  } 
  arg3 = static_cast< Magick::Quantum >(val3);ecode4 = SWIG_AsVal_float(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_Color" "', argument " "4"" of type '" "Magick::Quantum""'");
  } 
  arg4 = static_cast< Magick::Quantum >(val4);ecode5 = SWIG_AsVal_float(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_Color" "', argument " "5"" of type '" "Magick::Quantum""'");
  } 
  arg5 = static_cast< Magick::Quantum >(val5);{
    try {
      result = (Magick::Color *)new Magick::Color(arg1,arg2,arg3,arg4,arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Color__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  Magick::Color *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Color__SWIG_4.");
  }
  res1 = SWIG_AsCharPtrAndSize(info[0], &buf1, NULL, &alloc1);
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Color" "', argument " "1"" of type '" "char const *""'");
  }
  arg1 = reinterpret_cast< char * >(buf1);{
    try {
      result = (Magick::Color *)new Magick::Color((char const *)arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Color__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::Color *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Color__SWIG_5.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Color" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Color" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::Color *)new Magick::Color((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Color__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Color *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Color__SWIG_6.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Color" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Color" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::Color *)new Magick::Color((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Color_templ<SWIG_OBJ_WRAP>::_Magick_Color_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Color;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Color__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Color__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Color__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Color__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Color__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Color__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Color__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Color__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Color__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Color__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Color__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Color__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Color__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Color__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Color");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Color_templ<SWIG_OBJ_WRAP>::_Magick_Color_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Color_templ<SWIG_OBJ_WRAP>::~_Magick_Color_templ() {
  auto arg1 = reinterpret_cast<Magick::Color *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_clone__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_clone" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Color_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Color_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Color_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Color_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Color *) &(arg1)->operator =((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Color, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_clone__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  char *arg2 = (char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 ;
  char *buf2 = 0 ;
  int alloc2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_clone" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_AsCharPtrAndSize(info[0], &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Color_clone" "', argument " "2"" of type '" "char const *""'");
    }
    arg2 = reinterpret_cast< char * >(buf2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Color *) &(arg1)->operator =((char const *)arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Color, 0 |  0 );
    
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_clone__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_clone" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Color_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Color_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Color *) &(arg1)->operator =((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Color, 0 |  0 );
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Color__wrap_Magick_Color_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_clone__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_clone__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_clone__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_clone__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_clone__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_clone__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function clone.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_toString(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Color_toString.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_toString" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Color const *)arg1)->operator std::string();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_isFuzzyEquivalent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  Magick::Color *arg2 = 0 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Color_isFuzzyEquivalent.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_isFuzzyEquivalent" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Color_isFuzzyEquivalent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Color_isFuzzyEquivalent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Color_isFuzzyEquivalent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Color_isFuzzyEquivalent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Color_isFuzzyEquivalent" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Color const *)arg1)->isFuzzyEquivalent((Magick::Color const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_isValid__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_isValid" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Color_isValid" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->isValid(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_isValid__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_isValid" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Color const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Color__wrap_Magick_Color_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_isValid__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_isValid__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_isValid__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_isValid__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function isValid.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_pixelType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color::PixelType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Color_pixelType.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_pixelType" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Color::PixelType)((Magick::Color const *)arg1)->pixelType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumAlpha__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  Magick::Quantum arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumAlpha" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);ecode2 = SWIG_AsVal_float(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Color_quantumAlpha" "', argument " "2"" of type '" "Magick::Quantum""'");
    } 
    arg2 = static_cast< Magick::Quantum >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantumAlpha(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumAlpha__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumAlpha" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum)((Magick::Color const *)arg1)->quantumAlpha();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_float  SWIG_NAPI_FROM_CALL_ARGS(static_cast< float >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Color__wrap_Magick_Color_quantumAlpha(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumAlpha__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumAlpha__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumAlpha__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumAlpha__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantumAlpha.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumBlack__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  Magick::Quantum arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumBlack" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);ecode2 = SWIG_AsVal_float(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Color_quantumBlack" "', argument " "2"" of type '" "Magick::Quantum""'");
    } 
    arg2 = static_cast< Magick::Quantum >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantumBlack(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumBlack__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumBlack" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum)((Magick::Color const *)arg1)->quantumBlack();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_float  SWIG_NAPI_FROM_CALL_ARGS(static_cast< float >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Color__wrap_Magick_Color_quantumBlack(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumBlack__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumBlack__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumBlack__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumBlack__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantumBlack.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumBlue__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  Magick::Quantum arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumBlue" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);ecode2 = SWIG_AsVal_float(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Color_quantumBlue" "', argument " "2"" of type '" "Magick::Quantum""'");
    } 
    arg2 = static_cast< Magick::Quantum >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantumBlue(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumBlue__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumBlue" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum)((Magick::Color const *)arg1)->quantumBlue();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_float  SWIG_NAPI_FROM_CALL_ARGS(static_cast< float >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Color__wrap_Magick_Color_quantumBlue(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumBlue__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumBlue__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumBlue__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumBlue__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantumBlue.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumGreen__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  Magick::Quantum arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumGreen" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);ecode2 = SWIG_AsVal_float(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Color_quantumGreen" "', argument " "2"" of type '" "Magick::Quantum""'");
    } 
    arg2 = static_cast< Magick::Quantum >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantumGreen(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumGreen__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumGreen" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum)((Magick::Color const *)arg1)->quantumGreen();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_float  SWIG_NAPI_FROM_CALL_ARGS(static_cast< float >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Color__wrap_Magick_Color_quantumGreen(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumGreen__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumGreen__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumGreen__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumGreen__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantumGreen.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumRed__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  Magick::Quantum arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  float val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumRed" "', argument " "1"" of type '" "Magick::Color *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);ecode2 = SWIG_AsVal_float(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Color_quantumRed" "', argument " "2"" of type '" "Magick::Quantum""'");
    } 
    arg2 = static_cast< Magick::Quantum >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantumRed(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Color_quantumRed__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Color *arg1 = (Magick::Color *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Color, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Color_quantumRed" "', argument " "1"" of type '" "Magick::Color const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Color * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum)((Magick::Color const *)arg1)->quantumRed();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_float  SWIG_NAPI_FROM_CALL_ARGS(static_cast< float >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Color_templ<SWIG_OBJ_WRAP>::_wrap_Color__wrap_Magick_Color_quantumRed(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumRed__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumRed__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Color_quantumRed__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Color_quantumRed__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantumRed.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorCMYK__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ColorCMYK *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorCMYK__SWIG_0.");
  }
  {
    try {
      result = (Magick::ColorCMYK *)new Magick::ColorCMYK();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorCMYK__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::ColorCMYK *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorCMYK__SWIG_1.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ColorCMYK" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorCMYK" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_ColorCMYK" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorCMYK" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::ColorCMYK *)new Magick::ColorCMYK((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorCMYK__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  Magick::ColorCMYK *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorCMYK__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorCMYK" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_ColorCMYK" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_ColorCMYK" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_ColorCMYK" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    try {
      result = (Magick::ColorCMYK *)new Magick::ColorCMYK(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorCMYK__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  Magick::ColorCMYK *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorCMYK__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorCMYK" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_ColorCMYK" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_ColorCMYK" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_ColorCMYK" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_ColorCMYK" "', argument " "5"" of type '" "double""'");
  } 
  arg5 = static_cast< double >(val5);{
    try {
      result = (Magick::ColorCMYK *)new Magick::ColorCMYK(arg1,arg2,arg3,arg4,arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_Magick_ColorCMYK_templ(const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ColorCMYK;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorCMYK__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorCMYK__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorCMYK__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorCMYK__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorCMYK__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorCMYK__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorCMYK__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorCMYK__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ColorCMYK");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_Magick_ColorCMYK_templ(bool, const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::~_Magick_ColorCMYK_templ() {
  auto arg1 = reinterpret_cast<Magick::ColorCMYK *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorCMYK *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ColorCMYK_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_clone" "', argument " "1"" of type '" "Magick::ColorCMYK *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ColorCMYK_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorCMYK_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ColorCMYK_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorCMYK_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorCMYK *) &(arg1)->operator =((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_alpha__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_alpha" "', argument " "1"" of type '" "Magick::ColorCMYK *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorCMYK_alpha" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->alpha(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_alpha__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_alpha" "', argument " "1"" of type '" "Magick::ColorCMYK const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorCMYK const *)arg1)->alpha();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_alpha(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_alpha__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_alpha__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_alpha__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_alpha__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function alpha.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_black__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_black" "', argument " "1"" of type '" "Magick::ColorCMYK *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorCMYK_black" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->black(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_black__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_black" "', argument " "1"" of type '" "Magick::ColorCMYK const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorCMYK const *)arg1)->black();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_black(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_black__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_black__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_black__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_black__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function black.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_cyan__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_cyan" "', argument " "1"" of type '" "Magick::ColorCMYK *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorCMYK_cyan" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cyan(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_cyan__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_cyan" "', argument " "1"" of type '" "Magick::ColorCMYK const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorCMYK const *)arg1)->cyan();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_cyan(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_cyan__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_cyan__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_cyan__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_cyan__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function cyan.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_magenta__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_magenta" "', argument " "1"" of type '" "Magick::ColorCMYK *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorCMYK_magenta" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->magenta(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_magenta__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_magenta" "', argument " "1"" of type '" "Magick::ColorCMYK const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorCMYK const *)arg1)->magenta();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_magenta(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_magenta__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_magenta__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_magenta__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_magenta__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function magenta.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_yellow__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_yellow" "', argument " "1"" of type '" "Magick::ColorCMYK *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorCMYK_yellow" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->yellow(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorCMYK_yellow__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorCMYK *arg1 = (Magick::ColorCMYK *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorCMYK, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorCMYK_yellow" "', argument " "1"" of type '" "Magick::ColorCMYK const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorCMYK * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorCMYK const *)arg1)->yellow();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorCMYK_templ<SWIG_OBJ_WRAP>::_wrap_ColorCMYK__wrap_Magick_ColorCMYK_yellow(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_yellow__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_yellow__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorCMYK_yellow__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorCMYK_yellow__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function yellow.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorGray__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ColorGray *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorGray__SWIG_0.");
  }
  {
    try {
      result = (Magick::ColorGray *)new Magick::ColorGray();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorGray__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::ColorGray *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorGray__SWIG_1.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ColorGray" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorGray" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_ColorGray" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorGray" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::ColorGray *)new Magick::ColorGray((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorGray__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::ColorGray *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorGray__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorGray" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::ColorGray *)new Magick::ColorGray(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_Magick_ColorGray_templ(const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ColorGray;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorGray__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorGray__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorGray__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorGray__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorGray__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorGray__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ColorGray");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_Magick_ColorGray_templ(bool, const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ColorGray_templ<SWIG_OBJ_WRAP>::~_Magick_ColorGray_templ() {
  auto arg1 = reinterpret_cast<Magick::ColorGray *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorGray_shade__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorGray *arg1 = (Magick::ColorGray *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorGray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorGray_shade" "', argument " "1"" of type '" "Magick::ColorGray *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorGray * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorGray_shade" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shade(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorGray_shade__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorGray *arg1 = (Magick::ColorGray *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorGray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorGray_shade" "', argument " "1"" of type '" "Magick::ColorGray const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorGray * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorGray const *)arg1)->shade();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_wrap_ColorGray__wrap_Magick_ColorGray_shade(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorGray_shade__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorGray_shade__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorGray_shade__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorGray_shade__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function shade.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorGray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorGray_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorGray *arg1 = (Magick::ColorGray *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorGray *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ColorGray_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorGray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorGray_clone" "', argument " "1"" of type '" "Magick::ColorGray *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorGray * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ColorGray_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorGray_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ColorGray_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorGray_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorGray *) &(arg1)->operator =((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__ColorGray, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorHSL__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ColorHSL *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorHSL__SWIG_0.");
  }
  {
    try {
      result = (Magick::ColorHSL *)new Magick::ColorHSL();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorHSL__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::ColorHSL *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorHSL__SWIG_1.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ColorHSL" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorHSL" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_ColorHSL" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorHSL" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::ColorHSL *)new Magick::ColorHSL((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorHSL__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::ColorHSL *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorHSL__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorHSL" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_ColorHSL" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_ColorHSL" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::ColorHSL *)new Magick::ColorHSL(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_Magick_ColorHSL_templ(const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ColorHSL;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorHSL__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorHSL__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorHSL__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorHSL__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorHSL__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorHSL__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ColorHSL");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_Magick_ColorHSL_templ(bool, const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::~_Magick_ColorHSL_templ() {
  auto arg1 = reinterpret_cast<Magick::ColorHSL *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorHSL_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorHSL *arg1 = (Magick::ColorHSL *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorHSL *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ColorHSL_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorHSL_clone" "', argument " "1"" of type '" "Magick::ColorHSL *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorHSL * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ColorHSL_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorHSL_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ColorHSL_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorHSL_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorHSL *) &(arg1)->operator =((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorHSL_hue__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorHSL *arg1 = (Magick::ColorHSL *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorHSL_hue" "', argument " "1"" of type '" "Magick::ColorHSL *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorHSL * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorHSL_hue" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->hue(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorHSL_hue__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorHSL *arg1 = (Magick::ColorHSL *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorHSL_hue" "', argument " "1"" of type '" "Magick::ColorHSL const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorHSL * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorHSL const *)arg1)->hue();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_ColorHSL__wrap_Magick_ColorHSL_hue(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorHSL_hue__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorHSL_hue__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorHSL_hue__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorHSL_hue__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function hue.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorHSL_lightness__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorHSL *arg1 = (Magick::ColorHSL *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorHSL_lightness" "', argument " "1"" of type '" "Magick::ColorHSL *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorHSL * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorHSL_lightness" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->lightness(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorHSL_lightness__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorHSL *arg1 = (Magick::ColorHSL *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorHSL_lightness" "', argument " "1"" of type '" "Magick::ColorHSL const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorHSL * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorHSL const *)arg1)->lightness();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_ColorHSL__wrap_Magick_ColorHSL_lightness(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorHSL_lightness__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorHSL_lightness__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorHSL_lightness__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorHSL_lightness__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function lightness.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorHSL_saturation__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorHSL *arg1 = (Magick::ColorHSL *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorHSL_saturation" "', argument " "1"" of type '" "Magick::ColorHSL *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorHSL * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorHSL_saturation" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->saturation(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorHSL_saturation__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorHSL *arg1 = (Magick::ColorHSL *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorHSL, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorHSL_saturation" "', argument " "1"" of type '" "Magick::ColorHSL const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorHSL * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorHSL const *)arg1)->saturation();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorHSL_templ<SWIG_OBJ_WRAP>::_wrap_ColorHSL__wrap_Magick_ColorHSL_saturation(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorHSL_saturation__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorHSL_saturation__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorHSL_saturation__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorHSL_saturation__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function saturation.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorMono__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ColorMono *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorMono__SWIG_0.");
  }
  {
    try {
      result = (Magick::ColorMono *)new Magick::ColorMono();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorMono__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::ColorMono *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorMono__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorMono" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::ColorMono *)new Magick::ColorMono(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorMono__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::ColorMono *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorMono__SWIG_2.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ColorMono" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorMono" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_ColorMono" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorMono" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::ColorMono *)new Magick::ColorMono((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_Magick_ColorMono_templ(const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ColorMono;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorMono__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorMono__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorMono__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorMono__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorMono__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorMono__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ColorMono");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_Magick_ColorMono_templ(bool, const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ColorMono_templ<SWIG_OBJ_WRAP>::~_Magick_ColorMono_templ() {
  auto arg1 = reinterpret_cast<Magick::ColorMono *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorMono_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorMono *arg1 = (Magick::ColorMono *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorMono *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ColorMono_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorMono, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorMono_clone" "', argument " "1"" of type '" "Magick::ColorMono *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorMono * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ColorMono_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorMono_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ColorMono_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorMono_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorMono *) &(arg1)->operator =((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__ColorMono, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorMono_mono__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorMono *arg1 = (Magick::ColorMono *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorMono, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorMono_mono" "', argument " "1"" of type '" "Magick::ColorMono *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorMono * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorMono_mono" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->mono(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorMono_mono__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorMono *arg1 = (Magick::ColorMono *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorMono, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorMono_mono" "', argument " "1"" of type '" "Magick::ColorMono const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorMono * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::ColorMono const *)arg1)->mono();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorMono_templ<SWIG_OBJ_WRAP>::_wrap_ColorMono__wrap_Magick_ColorMono_mono(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorMono_mono__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorMono_mono__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorMono_mono__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorMono_mono__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function mono.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorRGB__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ColorRGB *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorRGB__SWIG_0.");
  }
  {
    try {
      result = (Magick::ColorRGB *)new Magick::ColorRGB();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorRGB__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::ColorRGB *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorRGB__SWIG_1.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ColorRGB" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorRGB" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_ColorRGB" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorRGB" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::ColorRGB *)new Magick::ColorRGB((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorRGB__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::ColorRGB *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorRGB__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorRGB" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_ColorRGB" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_ColorRGB" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::ColorRGB *)new Magick::ColorRGB(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorRGB__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  Magick::ColorRGB *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorRGB__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorRGB" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_ColorRGB" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_ColorRGB" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_ColorRGB" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    try {
      result = (Magick::ColorRGB *)new Magick::ColorRGB(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_Magick_ColorRGB_templ(const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ColorRGB;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorRGB__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorRGB__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorRGB__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorRGB__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorRGB__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorRGB__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorRGB__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorRGB__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ColorRGB");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_Magick_ColorRGB_templ(bool, const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::~_Magick_ColorRGB_templ() {
  auto arg1 = reinterpret_cast<Magick::ColorRGB *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorRGB *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ColorRGB_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_clone" "', argument " "1"" of type '" "Magick::ColorRGB *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ColorRGB_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorRGB_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ColorRGB_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorRGB_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorRGB *) &(arg1)->operator =((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_alpha__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_alpha" "', argument " "1"" of type '" "Magick::ColorRGB *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorRGB_alpha" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->alpha(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_alpha__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_alpha" "', argument " "1"" of type '" "Magick::ColorRGB const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorRGB const *)arg1)->alpha();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_ColorRGB__wrap_Magick_ColorRGB_alpha(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_alpha__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_alpha__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_alpha__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_alpha__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function alpha.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_blue__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_blue" "', argument " "1"" of type '" "Magick::ColorRGB *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorRGB_blue" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blue(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_blue__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_blue" "', argument " "1"" of type '" "Magick::ColorRGB const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorRGB const *)arg1)->blue();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_ColorRGB__wrap_Magick_ColorRGB_blue(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_blue__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_blue__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_blue__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_blue__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blue.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_green__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_green" "', argument " "1"" of type '" "Magick::ColorRGB *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorRGB_green" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->green(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_green__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_green" "', argument " "1"" of type '" "Magick::ColorRGB const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorRGB const *)arg1)->green();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_ColorRGB__wrap_Magick_ColorRGB_green(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_green__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_green__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_green__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_green__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function green.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_red__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_red" "', argument " "1"" of type '" "Magick::ColorRGB *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorRGB_red" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->red(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorRGB_red__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorRGB *arg1 = (Magick::ColorRGB *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorRGB, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorRGB_red" "', argument " "1"" of type '" "Magick::ColorRGB const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorRGB * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorRGB const *)arg1)->red();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorRGB_templ<SWIG_OBJ_WRAP>::_wrap_ColorRGB__wrap_Magick_ColorRGB_red(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_red__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_red__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorRGB_red__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorRGB_red__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function red.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorYUV__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ColorYUV *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorYUV__SWIG_0.");
  }
  {
    try {
      result = (Magick::ColorYUV *)new Magick::ColorYUV();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorYUV__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::ColorYUV *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorYUV__SWIG_1.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ColorYUV" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorYUV" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_ColorYUV" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ColorYUV" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::ColorYUV *)new Magick::ColorYUV((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ColorYUV__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::ColorYUV *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ColorYUV__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ColorYUV" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_ColorYUV" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_ColorYUV" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::ColorYUV *)new Magick::ColorYUV(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_Magick_ColorYUV_templ(const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ColorYUV;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorYUV__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorYUV__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorYUV__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorYUV__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ColorYUV__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ColorYUV__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ColorYUV");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_Magick_ColorYUV_templ(bool, const Napi::CallbackInfo &info)
:_Magick_Color_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::~_Magick_ColorYUV_templ() {
  auto arg1 = reinterpret_cast<Magick::ColorYUV *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorYUV_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorYUV *arg1 = (Magick::ColorYUV *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorYUV *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ColorYUV_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorYUV_clone" "', argument " "1"" of type '" "Magick::ColorYUV *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorYUV * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ColorYUV_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorYUV_clone" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ColorYUV_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ColorYUV_clone" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorYUV *) &(arg1)->operator =((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorYUV_u__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorYUV *arg1 = (Magick::ColorYUV *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorYUV_u" "', argument " "1"" of type '" "Magick::ColorYUV *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorYUV * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorYUV_u" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->u(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorYUV_u__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorYUV *arg1 = (Magick::ColorYUV *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorYUV_u" "', argument " "1"" of type '" "Magick::ColorYUV const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorYUV * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorYUV const *)arg1)->u();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_ColorYUV__wrap_Magick_ColorYUV_u(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorYUV_u__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorYUV_u__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorYUV_u__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorYUV_u__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function u.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorYUV_v__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorYUV *arg1 = (Magick::ColorYUV *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorYUV_v" "', argument " "1"" of type '" "Magick::ColorYUV *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorYUV * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorYUV_v" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->v(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorYUV_v__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorYUV *arg1 = (Magick::ColorYUV *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorYUV_v" "', argument " "1"" of type '" "Magick::ColorYUV const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorYUV * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorYUV const *)arg1)->v();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_ColorYUV__wrap_Magick_ColorYUV_v(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorYUV_v__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorYUV_v__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorYUV_v__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorYUV_v__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function v.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorYUV_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorYUV *arg1 = (Magick::ColorYUV *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorYUV_y" "', argument " "1"" of type '" "Magick::ColorYUV *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorYUV * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ColorYUV_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ColorYUV_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ColorYUV *arg1 = (Magick::ColorYUV *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ColorYUV, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ColorYUV_y" "', argument " "1"" of type '" "Magick::ColorYUV const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ColorYUV * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ColorYUV const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ColorYUV_templ<SWIG_OBJ_WRAP>::_wrap_ColorYUV__wrap_Magick_ColorYUV_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorYUV_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorYUV_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ColorYUV_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ColorYUV_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::Geometry const &)*arg1,(Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::Geometry const &)*arg1,(Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gt__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gt" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gt" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >((Magick::Geometry const &)*arg1,(Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lt__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lt" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lt" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <((Magick::Geometry const &)*arg1,(Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gte__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gte" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gte" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >=((Magick::Geometry const &)*arg1,(Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lte__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lte" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lte" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <=((Magick::Geometry const &)*arg1,(Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Geometry__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Geometry__SWIG_0.");
  }
  {
    try {
      result = (Magick::Geometry *)new Magick::Geometry();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Geometry__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  Magick::Geometry *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Geometry__SWIG_1.");
  }
  res1 = SWIG_AsCharPtrAndSize(info[0], &buf1, NULL, &alloc1);
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "char const *""'");
  }
  arg1 = reinterpret_cast< char * >(buf1);{
    try {
      result = (Magick::Geometry *)new Magick::Geometry((char const *)arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Geometry__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::Geometry *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Geometry__SWIG_2.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::Geometry *)new Magick::Geometry((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Geometry__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Geometry *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Geometry__SWIG_3.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::Geometry *)new Magick::Geometry((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Geometry__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  ::ssize_t arg3 ;
  ::ssize_t arg4 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  Magick::Geometry *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Geometry__SWIG_4.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Geometry" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_Geometry" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_Geometry" "', argument " "4"" of type '" "::ssize_t""'");
  } 
  arg4 = static_cast< ::ssize_t >(val4);{
    try {
      result = (Magick::Geometry *)new Magick::Geometry(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Geometry__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  ::ssize_t arg3 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::Geometry *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Geometry__SWIG_5.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Geometry" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_Geometry" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);{
    try {
      result = (Magick::Geometry *)new Magick::Geometry(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Geometry__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  Magick::Geometry *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Geometry__SWIG_6.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Geometry" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Geometry" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);{
    try {
      result = (Magick::Geometry *)new Magick::Geometry(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Geometry_templ<SWIG_OBJ_WRAP>::_Magick_Geometry_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Geometry;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Geometry__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Geometry__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Geometry__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Geometry__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Geometry__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Geometry__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Geometry__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Geometry__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Geometry__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Geometry__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Geometry__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Geometry__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Geometry__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Geometry__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Geometry");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Geometry_templ<SWIG_OBJ_WRAP>::_Magick_Geometry_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Geometry_templ<SWIG_OBJ_WRAP>::~_Magick_Geometry_templ() {
  auto arg1 = reinterpret_cast<Magick::Geometry *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_clone__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  char *arg2 = (char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 ;
  char *buf2 = 0 ;
  int alloc2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_clone" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_AsCharPtrAndSize(info[0], &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Geometry_clone" "', argument " "2"" of type '" "char const *""'");
    }
    arg2 = reinterpret_cast< char * >(buf2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Geometry *) &(arg1)->operator =((char const *)arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_clone__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_clone" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Geometry_clone" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Geometry_clone" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Geometry *) &(arg1)->operator =((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_clone__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_clone" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Geometry_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Geometry_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Geometry *) &(arg1)->operator =((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_toString(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Geometry_toString.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_toString" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Geometry const *)arg1)->operator std::string();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_aspect__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_aspect" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_aspect" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->aspect(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_aspect__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_aspect" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Geometry const *)arg1)->aspect();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_aspect(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_aspect__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_aspect__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_aspect__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_aspect__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function aspect.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_fillArea__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_fillArea" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_fillArea" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fillArea(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_fillArea__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_fillArea" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Geometry const *)arg1)->fillArea();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_fillArea(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_fillArea__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_fillArea__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_fillArea__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_fillArea__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillArea.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_greater__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_greater" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_greater" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->greater(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_greater__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_greater" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Geometry const *)arg1)->greater();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_greater(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_greater__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_greater__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_greater__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_greater__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function greater.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_height__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_height" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_height" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->height(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_height__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_height" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Geometry const *)arg1)->height();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_height(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_height__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_height__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_height__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_height__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function height.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_isValid__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_isValid" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_isValid" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->isValid(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_isValid__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_isValid" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Geometry const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_isValid__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_isValid__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_isValid__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_isValid__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function isValid.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_less__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_less" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_less" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->less(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_less__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_less" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Geometry const *)arg1)->less();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_less(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_less__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_less__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_less__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_less__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function less.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_limitPixels__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_limitPixels" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_limitPixels" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->limitPixels(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_limitPixels__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_limitPixels" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Geometry const *)arg1)->limitPixels();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_limitPixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_limitPixels__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_limitPixels__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_limitPixels__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_limitPixels__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function limitPixels.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_percent__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_percent" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_percent" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->percent(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_percent__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_percent" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Geometry const *)arg1)->percent();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_percent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_percent__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_percent__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_percent__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_percent__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function percent.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_width__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_width" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_width" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->width(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_width__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_width" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Geometry const *)arg1)->width();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_width(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_width__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_width__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_width__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_width__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function width.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_xOff__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  ::ssize_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_xOff" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_xOff" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->xOff(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_xOff__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ::ssize_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_xOff" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Geometry const *)arg1)->xOff();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_xOff(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_xOff__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_xOff__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_xOff__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_xOff__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function xOff.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_yOff__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  ::ssize_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_yOff" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Geometry_yOff" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->yOff(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_yOff__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ::ssize_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_yOff" "', argument " "1"" of type '" "Magick::Geometry const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Geometry const *)arg1)->yOff();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_yOff(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_yOff__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_yOff__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_yOff__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_yOff__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function yOff.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Geometry_clone__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Geometry *arg1 = (Magick::Geometry *) 0 ;
  MagickCore::RectangleInfo *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Geometry_clone" "', argument " "1"" of type '" "Magick::Geometry *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_MagickCore___RectangleInfo,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Geometry_clone" "', argument " "2"" of type '" "MagickCore::RectangleInfo const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Geometry_clone" "', argument " "2"" of type '" "MagickCore::RectangleInfo const &""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::RectangleInfo * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Geometry *) &(arg1)->operator =((MagickCore::RectangleInfo const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Geometry_templ<SWIG_OBJ_WRAP>::_wrap_Geometry__wrap_Magick_Geometry_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_clone__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_clone__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_clone__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_clone__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_clone__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_clone__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Geometry_clone__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Geometry_clone__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function clone.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Offset *arg1 = 0 ;
  Magick::Offset *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Offset,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::Offset const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::Offset const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Offset * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Offset,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::Offset const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::Offset const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Offset * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::Offset const &)*arg1,(Magick::Offset const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Offset *arg1 = 0 ;
  Magick::Offset *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Offset,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Offset const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Offset const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Offset * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Offset,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Offset const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Offset const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Offset * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::Offset const &)*arg1,(Magick::Offset const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Offset__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Offset *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Offset__SWIG_0.");
  }
  {
    try {
      result = (Magick::Offset *)new Magick::Offset();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Offset__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  Magick::Offset *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Offset__SWIG_1.");
  }
  res1 = SWIG_AsCharPtrAndSize(info[0], &buf1, NULL, &alloc1);
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Offset" "', argument " "1"" of type '" "char const *""'");
  }
  arg1 = reinterpret_cast< char * >(buf1);{
    try {
      result = (Magick::Offset *)new Magick::Offset((char const *)arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Offset__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Offset *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Offset *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Offset__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Offset,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Offset" "', argument " "1"" of type '" "Magick::Offset const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Offset" "', argument " "1"" of type '" "Magick::Offset const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Offset * >(argp1);{
    try {
      result = (Magick::Offset *)new Magick::Offset((Magick::Offset const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Offset__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Offset *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Offset__SWIG_3.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Offset" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Offset" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::Offset *)new Magick::Offset((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Offset__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ssize_t arg1 ;
  ssize_t arg2 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::Offset *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Offset__SWIG_4.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Offset" "', argument " "1"" of type '" "ssize_t""'");
  } 
  arg1 = static_cast< ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Offset" "', argument " "2"" of type '" "ssize_t""'");
  } 
  arg2 = static_cast< ssize_t >(val2);{
    try {
      result = (Magick::Offset *)new Magick::Offset(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Offset_templ<SWIG_OBJ_WRAP>::_Magick_Offset_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Offset;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Offset__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Offset__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Offset__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Offset__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Offset__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Offset__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Offset__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Offset__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Offset__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Offset__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Offset");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Offset_templ<SWIG_OBJ_WRAP>::_Magick_Offset_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Offset_templ<SWIG_OBJ_WRAP>::~_Magick_Offset_templ() {
  auto arg1 = reinterpret_cast<Magick::Offset *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Offset_clone__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Offset *arg1 = (Magick::Offset *) 0 ;
  char *arg2 = (char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 ;
  char *buf2 = 0 ;
  int alloc2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Offset *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Offset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Offset_clone" "', argument " "1"" of type '" "Magick::Offset *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Offset * >(argp1);res2 = SWIG_AsCharPtrAndSize(info[0], &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Offset_clone" "', argument " "2"" of type '" "char const *""'");
    }
    arg2 = reinterpret_cast< char * >(buf2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Offset *) &(arg1)->operator =((char const *)arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Offset, 0 |  0 );
    
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Offset_clone__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Offset *arg1 = (Magick::Offset *) 0 ;
  Magick::Offset *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Offset *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Offset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Offset_clone" "', argument " "1"" of type '" "Magick::Offset *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Offset * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Offset,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Offset_clone" "', argument " "2"" of type '" "Magick::Offset const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Offset_clone" "', argument " "2"" of type '" "Magick::Offset const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Offset * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Offset *) &(arg1)->operator =((Magick::Offset const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Offset, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Offset_clone__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Offset *arg1 = (Magick::Offset *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Offset *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Offset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Offset_clone" "', argument " "1"" of type '" "Magick::Offset *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Offset * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Offset_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Offset_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Offset *) &(arg1)->operator =((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Offset, 0 |  0 );
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_Offset__wrap_Magick_Offset_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Offset_clone__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Offset_clone__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Offset_clone__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Offset_clone__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Offset_clone__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Offset_clone__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function clone.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Offset_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Offset *arg1 = (Magick::Offset *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ssize_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Offset_x.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Offset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Offset_x" "', argument " "1"" of type '" "Magick::Offset const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Offset * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Offset const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Offset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Offset_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Offset *arg1 = (Magick::Offset *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ssize_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Offset_y.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Offset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Offset_y" "', argument " "1"" of type '" "Magick::Offset const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Offset * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Offset const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = 0 ;
  Magick::Point *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Point,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::Point const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::Point const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Point,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Point * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::Point const &)*arg1,(Magick::Point const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = 0 ;
  Magick::Point *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Point,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Point const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Point const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Point,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Point * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::Point const &)*arg1,(Magick::Point const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Point__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Point *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Point__SWIG_0.");
  }
  {
    try {
      result = (Magick::Point *)new Magick::Point();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Point__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  Magick::Point *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Point__SWIG_1.");
  }
  res1 = SWIG_AsCharPtrAndSize(info[0], &buf1, NULL, &alloc1);
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Point" "', argument " "1"" of type '" "char const *""'");
  }
  arg1 = reinterpret_cast< char * >(buf1);{
    try {
      result = (Magick::Point *)new Magick::Point((char const *)arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Point__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Point *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Point *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Point__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Point,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Point" "', argument " "1"" of type '" "Magick::Point const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Point" "', argument " "1"" of type '" "Magick::Point const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Point * >(argp1);{
    try {
      result = (Magick::Point *)new Magick::Point((Magick::Point const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Point__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Point *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Point__SWIG_3.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Point" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Point" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::Point *)new Magick::Point((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Point__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::Point *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Point__SWIG_4.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Point" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Point" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::Point *)new Magick::Point(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Point__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::Point *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Point__SWIG_5.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Point" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::Point *)new Magick::Point(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Point_templ<SWIG_OBJ_WRAP>::_Magick_Point_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Point;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Point__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Point__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Point__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Point__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Point__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Point__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Point__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Point__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Point__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Point__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Point__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Point__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Point");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Point_templ<SWIG_OBJ_WRAP>::_Magick_Point_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Point_templ<SWIG_OBJ_WRAP>::~_Magick_Point_templ() {
  auto arg1 = reinterpret_cast<Magick::Point *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_clone__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  char *arg2 = (char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 ;
  char *buf2 = 0 ;
  int alloc2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Point *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_clone" "', argument " "1"" of type '" "Magick::Point *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);res2 = SWIG_AsCharPtrAndSize(info[0], &buf2, NULL, &alloc2);
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Point_clone" "', argument " "2"" of type '" "char const *""'");
    }
    arg2 = reinterpret_cast< char * >(buf2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Point *) &(arg1)->operator =((char const *)arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Point, 0 |  0 );
    
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_clone__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Point *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_clone" "', argument " "1"" of type '" "Magick::Point *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Point_clone" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Point *) &(arg1)->operator =(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Point, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_clone__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  Magick::Point *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Point *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_clone" "', argument " "1"" of type '" "Magick::Point *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Point,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Point_clone" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Point_clone" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Point * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Point *) &(arg1)->operator =((Magick::Point const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Point, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_clone__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Point *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_clone" "', argument " "1"" of type '" "Magick::Point *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Point_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Point_clone" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Point *) &(arg1)->operator =((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Point, 0 |  0 );
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Point__wrap_Magick_Point_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Point_clone__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Point_clone__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Point_clone__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Point_clone__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Point_clone__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Point_clone__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Point_clone__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Point_clone__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function clone.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_toString(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Point_toString.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_toString" "', argument " "1"" of type '" "Magick::Point const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Point const *)arg1)->operator std::string();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Point_isValid.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_isValid" "', argument " "1"" of type '" "Magick::Point const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Point const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Point_x.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_x" "', argument " "1"" of type '" "Magick::Point const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Point const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Point_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Point_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Point *arg1 = (Magick::Point *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Point_y.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Point, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Point_y" "', argument " "1"" of type '" "Magick::Point const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Point * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Point const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Coordinate__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Coordinate__SWIG_0.");
  }
  {
    try {
      result = (Magick::Coordinate *)new Magick::Coordinate();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Coordinate__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::Coordinate *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Coordinate__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Coordinate" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Coordinate" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::Coordinate *)new Magick::Coordinate(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_Magick_Coordinate_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Coordinate;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Coordinate__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Coordinate__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Coordinate__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Coordinate__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Coordinate");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_Magick_Coordinate_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Coordinate_templ<SWIG_OBJ_WRAP>::~_Magick_Coordinate_templ() {
  auto arg1 = reinterpret_cast<Magick::Coordinate *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Coordinate_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = (Magick::Coordinate *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Coordinate, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Coordinate_x" "', argument " "1"" of type '" "Magick::Coordinate *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Coordinate_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Coordinate_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = (Magick::Coordinate *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Coordinate, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Coordinate_x" "', argument " "1"" of type '" "Magick::Coordinate const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Coordinate const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_Coordinate__wrap_Magick_Coordinate_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Coordinate_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Coordinate_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Coordinate_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Coordinate_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Coordinate_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = (Magick::Coordinate *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Coordinate, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Coordinate_y" "', argument " "1"" of type '" "Magick::Coordinate *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Coordinate_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Coordinate_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = (Magick::Coordinate *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Coordinate, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Coordinate_y" "', argument " "1"" of type '" "Magick::Coordinate const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Coordinate const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Coordinate_templ<SWIG_OBJ_WRAP>::_wrap_Coordinate__wrap_Magick_Coordinate_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Coordinate_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Coordinate_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Coordinate_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Coordinate_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = 0 ;
  Magick::Coordinate *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Coordinate * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::Coordinate const &)*arg1,(Magick::Coordinate const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = 0 ;
  Magick::Coordinate *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Coordinate * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::Coordinate const &)*arg1,(Magick::Coordinate const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gt__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = 0 ;
  Magick::Coordinate *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gt" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gt" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Coordinate * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >((Magick::Coordinate const &)*arg1,(Magick::Coordinate const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lt__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = 0 ;
  Magick::Coordinate *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lt" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lt" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Coordinate * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <((Magick::Coordinate const &)*arg1,(Magick::Coordinate const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gte__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = 0 ;
  Magick::Coordinate *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gte" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gte" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Coordinate * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >=((Magick::Coordinate const &)*arg1,(Magick::Coordinate const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lte__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Coordinate *arg1 = 0 ;
  Magick::Coordinate *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lte" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Coordinate,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lte" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "2"" of type '" "Magick::Coordinate const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Coordinate * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <=((Magick::Coordinate const &)*arg1,(Magick::Coordinate const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>::_Magick_DrawableBase_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableBase;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DrawableBase *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableBase.");
  }
  {
    try {
      result = (Magick::DrawableBase *)new Magick::DrawableBase();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>::_Magick_DrawableBase_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableBase_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableBase *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBase_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBase_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBase *arg1 = (Magick::DrawableBase *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableBase_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBase_call" "', argument " "1"" of type '" "Magick::DrawableBase const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBase * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableBase_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableBase const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBase_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBase_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBase *arg1 = (Magick::DrawableBase *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableBase_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBase_copy" "', argument " "1"" of type '" "Magick::DrawableBase const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBase * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableBase const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Drawable_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Drawable__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Drawable *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Drawable__SWIG_0.");
  }
  {
    try {
      result = (Magick::Drawable *)new Magick::Drawable();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Drawable_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Drawable__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableBase *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Drawable *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Drawable__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableBase,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Drawable" "', argument " "1"" of type '" "Magick::DrawableBase const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Drawable" "', argument " "1"" of type '" "Magick::DrawableBase const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableBase * >(argp1);{
    try {
      result = (Magick::Drawable *)new Magick::Drawable((Magick::DrawableBase const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Drawable_templ<SWIG_OBJ_WRAP>::~_Magick_Drawable_templ() {
  auto arg1 = reinterpret_cast<Magick::Drawable *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Drawable_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Drawable__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Drawable *arg1 = 0 ;
  Magick::Drawable *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Drawable__SWIG_2.");
  }
  {
    {
      void *argp;
      // Convert from Magick::DrawableBase as this is what the user has passed
      if (!SWIG_IsOK(SWIG_ConvertPtr(info[0], &argp, SWIGTYPE_p_Magick__DrawableBase, 0))) {
        SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_Drawable', argument 1 of type 'Magick::Drawable const &'"); 
      }
      if (!argp) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference in method 'new_Magick_Drawable', argument 1 of type 'Magick::Drawable const &'"); 
      }
      // Construct the Magick::Drawable
      arg1 = new Magick::Drawable(* reinterpret_cast< Magick::DrawableBase * >(argp));
    }
  }
  {
    try {
      result = (Magick::Drawable *)new Magick::Drawable((Magick::Drawable const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  {
    delete arg1;
  }
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Drawable_templ<SWIG_OBJ_WRAP>::_Magick_Drawable_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Drawable;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Drawable__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Drawable__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Drawable__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Drawable__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Drawable__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Drawable__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Drawable");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Drawable_templ<SWIG_OBJ_WRAP>::_Magick_Drawable_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Drawable_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Drawable_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Drawable *arg1 = (Magick::Drawable *) 0 ;
  Magick::Drawable *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Drawable *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Drawable_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Drawable, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Drawable_clone" "', argument " "1"" of type '" "Magick::Drawable *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Drawable * >(argp1);{
      {
        void *argp;
        // Convert from Magick::DrawableBase as this is what the user has passed
        if (!SWIG_IsOK(SWIG_ConvertPtr(info[0], &argp, SWIGTYPE_p_Magick__DrawableBase, 0))) {
          SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Drawable_clone', argument 2 of type 'Magick::Drawable const &'"); 
        }
        if (!argp) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference in method 'Magick_Drawable_clone', argument 2 of type 'Magick::Drawable const &'"); 
        }
        // Construct the Magick::Drawable
        arg2 = new Magick::Drawable(* reinterpret_cast< Magick::DrawableBase * >(argp));
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Drawable *) &(arg1)->operator =((Magick::Drawable const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Drawable, 0 |  0 );
    
    {
      delete arg2;
    }
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    {
      delete arg2;
    }
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  {
    delete arg2;
  }
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Drawable_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Drawable_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Drawable *arg1 = (Magick::Drawable *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Drawable_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Drawable, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Drawable_call" "', argument " "1"" of type '" "Magick::Drawable const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Drawable * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Drawable_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::Drawable const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_VPathBase_templ<SWIG_OBJ_WRAP>::~_Magick_VPathBase_templ() {
  auto arg1 = reinterpret_cast<Magick::VPathBase *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_VPathBase_templ<SWIG_OBJ_WRAP>::_wrap_Magick_VPathBase_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::VPathBase *arg1 = (Magick::VPathBase *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_VPathBase_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_VPathBase_call" "', argument " "1"" of type '" "Magick::VPathBase const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::VPathBase * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_VPathBase_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::VPathBase const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_VPathBase_templ<SWIG_OBJ_WRAP>::_wrap_Magick_VPathBase_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::VPathBase *arg1 = (Magick::VPathBase *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_VPathBase_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_VPathBase_copy" "', argument " "1"" of type '" "Magick::VPathBase const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::VPathBase * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::VPathBase const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_veto_ctor
template <typename SWIG_OBJ_WRAP>
_Magick_VPathBase_templ<SWIG_OBJ_WRAP>::_Magick_VPathBase_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS as its
    // base abstract class
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  SWIG_Error(SWIG_ERROR, "Class VPathBase can not be instantiated");
  return;
  goto fail;
fail:
  return;
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_VPathBase_templ<SWIG_OBJ_WRAP>::_Magick_VPathBase_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_VPath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_VPath__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::VPath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_VPath__SWIG_0.");
  }
  {
    try {
      result = (Magick::VPath *)new Magick::VPath();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_VPath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_VPath__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::VPathBase *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::VPath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_VPath__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__VPathBase,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_VPath" "', argument " "1"" of type '" "Magick::VPathBase const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_VPath" "', argument " "1"" of type '" "Magick::VPathBase const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::VPathBase * >(argp1);{
    try {
      result = (Magick::VPath *)new Magick::VPath((Magick::VPathBase const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_VPath_templ<SWIG_OBJ_WRAP>::~_Magick_VPath_templ() {
  auto arg1 = reinterpret_cast<Magick::VPath *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_VPath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_VPath__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::VPath *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::VPath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_VPath__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__VPath,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_VPath" "', argument " "1"" of type '" "Magick::VPath const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_VPath" "', argument " "1"" of type '" "Magick::VPath const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::VPath * >(argp1);{
    try {
      result = (Magick::VPath *)new Magick::VPath((Magick::VPath const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_VPath_templ<SWIG_OBJ_WRAP>::_Magick_VPath_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__VPath;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_VPath__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_VPath__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_VPath__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_VPath__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_VPath__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_VPath__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_VPath");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_VPath_templ<SWIG_OBJ_WRAP>::_Magick_VPath_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_VPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_VPath_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::VPath *arg1 = (Magick::VPath *) 0 ;
  Magick::VPath *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPath *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_VPath_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__VPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_VPath_clone" "', argument " "1"" of type '" "Magick::VPath *""'"); 
    }
    arg1 = reinterpret_cast< Magick::VPath * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__VPath,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_VPath_clone" "', argument " "2"" of type '" "Magick::VPath const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_VPath_clone" "', argument " "2"" of type '" "Magick::VPath const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::VPath * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPath *) &(arg1)->operator =((Magick::VPath const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPath, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_VPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_VPath_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::VPath *arg1 = (Magick::VPath *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_VPath_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__VPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_VPath_call" "', argument " "1"" of type '" "Magick::VPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::VPath * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_VPath_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::VPath const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableAffine__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  double arg6 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  Magick::DrawableAffine *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableAffine__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableAffine" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableAffine" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableAffine" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableAffine" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_DrawableAffine" "', argument " "5"" of type '" "double""'");
  } 
  arg5 = static_cast< double >(val5);ecode6 = SWIG_AsVal_double(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_DrawableAffine" "', argument " "6"" of type '" "double""'");
  } 
  arg6 = static_cast< double >(val6);{
    try {
      result = (Magick::DrawableAffine *)new Magick::DrawableAffine(arg1,arg2,arg3,arg4,arg5,arg6);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableAffine__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableAffine *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableAffine__SWIG_1.");
  }
  {
    try {
      result = (Magick::DrawableAffine *)new Magick::DrawableAffine();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_Magick_DrawableAffine_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableAffine;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 6 && static_cast<int>(info.Length()) <= 6) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableAffine__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableAffine__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableAffine__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableAffine__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableAffine");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_Magick_DrawableAffine_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableAffine_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableAffine *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableAffine_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_call" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableAffine_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableAffine const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableAffine_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_copy" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableAffine const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_sx__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_sx" "', argument " "1"" of type '" "Magick::DrawableAffine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAffine_sx" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sx(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_sx__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_sx" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAffine const *)arg1)->sx();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_sx(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_sx__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_sx__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_sx__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_sx__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sx.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_sy__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_sy" "', argument " "1"" of type '" "Magick::DrawableAffine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAffine_sy" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sy(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_sy__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_sy" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAffine const *)arg1)->sy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_sy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_sy__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_sy__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_sy__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_sy__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sy.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_rx__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_rx" "', argument " "1"" of type '" "Magick::DrawableAffine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAffine_rx" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->rx(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_rx__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_rx" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAffine const *)arg1)->rx();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_rx(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_rx__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_rx__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_rx__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_rx__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function rx.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_ry__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_ry" "', argument " "1"" of type '" "Magick::DrawableAffine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAffine_ry" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->ry(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_ry__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_ry" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAffine const *)arg1)->ry();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_ry(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_ry__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_ry__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_ry__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_ry__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function ry.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_tx__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_tx" "', argument " "1"" of type '" "Magick::DrawableAffine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAffine_tx" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->tx(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_tx__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_tx" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAffine const *)arg1)->tx();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_tx(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_tx__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_tx__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_tx__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_tx__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function tx.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_ty__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_ty" "', argument " "1"" of type '" "Magick::DrawableAffine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAffine_ty" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->ty(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAffine_ty__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAffine *arg1 = (Magick::DrawableAffine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAffine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAffine_ty" "', argument " "1"" of type '" "Magick::DrawableAffine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAffine const *)arg1)->ty();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAffine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAffine__wrap_Magick_DrawableAffine_ty(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_ty__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_ty__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAffine_ty__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAffine_ty__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function ty.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_Magick_DrawableAlpha_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableAlpha;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  Magick::PaintMethod arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::DrawableAlpha *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableAlpha.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableAlpha" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableAlpha" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableAlpha" "', argument " "3"" of type '" "Magick::PaintMethod""'");
  } 
  arg3 = static_cast< Magick::PaintMethod >(val3);{
    try {
      result = (Magick::DrawableAlpha *)new Magick::DrawableAlpha(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_Magick_DrawableAlpha_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableAlpha_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableAlpha *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableAlpha_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_call" "', argument " "1"" of type '" "Magick::DrawableAlpha const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableAlpha_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableAlpha const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableAlpha_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_copy" "', argument " "1"" of type '" "Magick::DrawableAlpha const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableAlpha const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_x" "', argument " "1"" of type '" "Magick::DrawableAlpha *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAlpha_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_x" "', argument " "1"" of type '" "Magick::DrawableAlpha const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAlpha const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAlpha_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAlpha_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAlpha_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAlpha_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_y" "', argument " "1"" of type '" "Magick::DrawableAlpha *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAlpha_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_y" "', argument " "1"" of type '" "Magick::DrawableAlpha const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableAlpha const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAlpha_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAlpha_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAlpha_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAlpha_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_paintMethod__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  Magick::PaintMethod arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_paintMethod" "', argument " "1"" of type '" "Magick::DrawableAlpha *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableAlpha_paintMethod" "', argument " "2"" of type '" "Magick::PaintMethod""'");
    } 
    arg2 = static_cast< Magick::PaintMethod >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->paintMethod(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableAlpha_paintMethod__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableAlpha *arg1 = (Magick::DrawableAlpha *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::PaintMethod result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableAlpha, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableAlpha_paintMethod" "', argument " "1"" of type '" "Magick::DrawableAlpha const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableAlpha * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::PaintMethod)((Magick::DrawableAlpha const *)arg1)->paintMethod();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableAlpha_templ<SWIG_OBJ_WRAP>::_wrap_DrawableAlpha__wrap_Magick_DrawableAlpha_paintMethod(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAlpha_paintMethod__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAlpha_paintMethod__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableAlpha_paintMethod__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableAlpha_paintMethod__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function paintMethod.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_Magick_DrawableArc_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableArc;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  double arg6 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  Magick::DrawableArc *result;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableArc.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableArc" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableArc" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableArc" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableArc" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_DrawableArc" "', argument " "5"" of type '" "double""'");
  } 
  arg5 = static_cast< double >(val5);ecode6 = SWIG_AsVal_double(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_DrawableArc" "', argument " "6"" of type '" "double""'");
  } 
  arg6 = static_cast< double >(val6);{
    try {
      result = (Magick::DrawableArc *)new Magick::DrawableArc(arg1,arg2,arg3,arg4,arg5,arg6);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_Magick_DrawableArc_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableArc_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableArc *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableArc_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_call" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableArc_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableArc const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableArc_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_copy" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableArc const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_startX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_startX" "', argument " "1"" of type '" "Magick::DrawableArc *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableArc_startX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->startX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_startX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_startX" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableArc const *)arg1)->startX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_DrawableArc__wrap_Magick_DrawableArc_startX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_startX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_startX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_startX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_startX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function startX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_startY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_startY" "', argument " "1"" of type '" "Magick::DrawableArc *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableArc_startY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->startY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_startY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_startY" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableArc const *)arg1)->startY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_DrawableArc__wrap_Magick_DrawableArc_startY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_startY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_startY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_startY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_startY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function startY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_endX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_endX" "', argument " "1"" of type '" "Magick::DrawableArc *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableArc_endX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->endX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_endX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_endX" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableArc const *)arg1)->endX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_DrawableArc__wrap_Magick_DrawableArc_endX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_endX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_endX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_endX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_endX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function endX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_endY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_endY" "', argument " "1"" of type '" "Magick::DrawableArc *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableArc_endY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->endY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_endY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_endY" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableArc const *)arg1)->endY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_DrawableArc__wrap_Magick_DrawableArc_endY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_endY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_endY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_endY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_endY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function endY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_startDegrees__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_startDegrees" "', argument " "1"" of type '" "Magick::DrawableArc *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableArc_startDegrees" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->startDegrees(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_startDegrees__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_startDegrees" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableArc const *)arg1)->startDegrees();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_DrawableArc__wrap_Magick_DrawableArc_startDegrees(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_startDegrees__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_startDegrees__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_startDegrees__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_startDegrees__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function startDegrees.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_endDegrees__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_endDegrees" "', argument " "1"" of type '" "Magick::DrawableArc *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableArc_endDegrees" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->endDegrees(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableArc_endDegrees__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableArc *arg1 = (Magick::DrawableArc *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableArc, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableArc_endDegrees" "', argument " "1"" of type '" "Magick::DrawableArc const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableArc * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableArc const *)arg1)->endDegrees();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableArc_templ<SWIG_OBJ_WRAP>::_wrap_DrawableArc__wrap_Magick_DrawableArc_endDegrees(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_endDegrees__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_endDegrees__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableArc_endDegrees__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableArc_endDegrees__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function endDegrees.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBezier_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableBezier__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableBezier *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableBezier__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableBezier" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableBezier" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::DrawableBezier *)new Magick::DrawableBezier((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBezier_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableBezier__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableBezier *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableBezier *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableBezier__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableBezier,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableBezier" "', argument " "1"" of type '" "Magick::DrawableBezier const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableBezier" "', argument " "1"" of type '" "Magick::DrawableBezier const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableBezier * >(argp1);{
    try {
      result = (Magick::DrawableBezier *)new Magick::DrawableBezier((Magick::DrawableBezier const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBezier_templ<SWIG_OBJ_WRAP>::_Magick_DrawableBezier_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableBezier;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableBezier__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableBezier__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableBezier__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableBezier__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableBezier");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBezier_templ<SWIG_OBJ_WRAP>::_Magick_DrawableBezier_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBezier_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableBezier_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableBezier *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBezier_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBezier_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBezier *arg1 = (Magick::DrawableBezier *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableBezier_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBezier, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBezier_call" "', argument " "1"" of type '" "Magick::DrawableBezier const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBezier * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableBezier_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableBezier const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBezier_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBezier_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBezier *arg1 = (Magick::DrawableBezier *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableBezier_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBezier, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBezier_copy" "', argument " "1"" of type '" "Magick::DrawableBezier const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBezier * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableBezier const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableBorderColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::DrawableBorderColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableBorderColor__SWIG_0.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableBorderColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableBorderColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_DrawableBorderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableBorderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::DrawableBorderColor *)new Magick::DrawableBorderColor((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableBorderColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableBorderColor *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableBorderColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableBorderColor__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableBorderColor,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableBorderColor" "', argument " "1"" of type '" "Magick::DrawableBorderColor const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableBorderColor" "', argument " "1"" of type '" "Magick::DrawableBorderColor const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableBorderColor * >(argp1);{
    try {
      result = (Magick::DrawableBorderColor *)new Magick::DrawableBorderColor((Magick::DrawableBorderColor const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableBorderColor_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableBorderColor;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableBorderColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableBorderColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableBorderColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableBorderColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableBorderColor");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableBorderColor_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableBorderColor_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableBorderColor *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBorderColor_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBorderColor *arg1 = (Magick::DrawableBorderColor *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableBorderColor_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBorderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBorderColor_call" "', argument " "1"" of type '" "Magick::DrawableBorderColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBorderColor * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableBorderColor_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableBorderColor const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBorderColor_color__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBorderColor *arg1 = (Magick::DrawableBorderColor *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBorderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBorderColor_color" "', argument " "1"" of type '" "Magick::DrawableBorderColor *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBorderColor * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_DrawableBorderColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableBorderColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_DrawableBorderColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableBorderColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->color((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBorderColor_color__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBorderColor *arg1 = (Magick::DrawableBorderColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBorderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBorderColor_color" "', argument " "1"" of type '" "Magick::DrawableBorderColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBorderColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableBorderColor const *)arg1)->color();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_wrap_DrawableBorderColor__wrap_Magick_DrawableBorderColor_color(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableBorderColor_color__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableBorderColor_color__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableBorderColor_color__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableBorderColor_color__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function color.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableBorderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableBorderColor_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableBorderColor *arg1 = (Magick::DrawableBorderColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableBorderColor_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableBorderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableBorderColor_copy" "', argument " "1"" of type '" "Magick::DrawableBorderColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableBorderColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableBorderColor const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::_Magick_DrawableClipRule_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableClipRule;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::FillRule arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableClipRule *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableClipRule.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableClipRule" "', argument " "1"" of type '" "Magick::FillRule""'");
  } 
  arg1 = static_cast< Magick::FillRule >(val1);{
    try {
      result = (Magick::DrawableClipRule *)new Magick::DrawableClipRule(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::_Magick_DrawableClipRule_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableClipRule_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableClipRule *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipRule_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipRule *arg1 = (Magick::DrawableClipRule *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableClipRule_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipRule_call" "', argument " "1"" of type '" "Magick::DrawableClipRule const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipRule * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableClipRule_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableClipRule const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipRule_fillRule__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipRule *arg1 = (Magick::DrawableClipRule *) 0 ;
  Magick::FillRule arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipRule_fillRule" "', argument " "1"" of type '" "Magick::DrawableClipRule *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipRule * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableClipRule_fillRule" "', argument " "2"" of type '" "Magick::FillRule""'");
    } 
    arg2 = static_cast< Magick::FillRule >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fillRule(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipRule_fillRule__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipRule *arg1 = (Magick::DrawableClipRule *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::FillRule result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipRule_fillRule" "', argument " "1"" of type '" "Magick::DrawableClipRule const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipRule * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::FillRule)((Magick::DrawableClipRule const *)arg1)->fillRule();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::_wrap_DrawableClipRule__wrap_Magick_DrawableClipRule_fillRule(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableClipRule_fillRule__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableClipRule_fillRule__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableClipRule_fillRule__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableClipRule_fillRule__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillRule.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipRule_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipRule *arg1 = (Magick::DrawableClipRule *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableClipRule_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipRule_copy" "', argument " "1"" of type '" "Magick::DrawableClipRule const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipRule * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableClipRule const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::_Magick_DrawableClipUnits_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableClipUnits;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::ClipPathUnits arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableClipUnits *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableClipUnits.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableClipUnits" "', argument " "1"" of type '" "Magick::ClipPathUnits""'");
  } 
  arg1 = static_cast< Magick::ClipPathUnits >(val1);{
    try {
      result = (Magick::DrawableClipUnits *)new Magick::DrawableClipUnits(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::_Magick_DrawableClipUnits_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableClipUnits_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableClipUnits *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipUnits_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipUnits *arg1 = (Magick::DrawableClipUnits *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableClipUnits_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipUnits, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipUnits_call" "', argument " "1"" of type '" "Magick::DrawableClipUnits const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipUnits * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableClipUnits_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableClipUnits const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipUnits_units__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipUnits *arg1 = (Magick::DrawableClipUnits *) 0 ;
  Magick::ClipPathUnits arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipUnits, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipUnits_units" "', argument " "1"" of type '" "Magick::DrawableClipUnits *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipUnits * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableClipUnits_units" "', argument " "2"" of type '" "Magick::ClipPathUnits""'");
    } 
    arg2 = static_cast< Magick::ClipPathUnits >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->units(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipUnits_units__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipUnits *arg1 = (Magick::DrawableClipUnits *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ClipPathUnits result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipUnits, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipUnits_units" "', argument " "1"" of type '" "Magick::DrawableClipUnits const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipUnits * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ClipPathUnits)((Magick::DrawableClipUnits const *)arg1)->units();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::_wrap_DrawableClipUnits__wrap_Magick_DrawableClipUnits_units(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableClipUnits_units__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableClipUnits_units__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableClipUnits_units__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableClipUnits_units__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function units.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipUnits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipUnits_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipUnits *arg1 = (Magick::DrawableClipUnits *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableClipUnits_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipUnits, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipUnits_copy" "', argument " "1"" of type '" "Magick::DrawableClipUnits const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipUnits * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableClipUnits const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawablePopClipPath_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePopClipPath_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawablePopClipPath;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DrawablePopClipPath *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePopClipPath.");
  }
  {
    try {
      result = (Magick::DrawablePopClipPath *)new Magick::DrawablePopClipPath();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePopClipPath_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePopClipPath_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePopClipPath_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePopClipPath_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePopClipPath *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePopClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePopClipPath_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePopClipPath *arg1 = (Magick::DrawablePopClipPath *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePopClipPath_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePopClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePopClipPath_call" "', argument " "1"" of type '" "Magick::DrawablePopClipPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePopClipPath * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePopClipPath_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePopClipPath const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePopClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePopClipPath_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePopClipPath *arg1 = (Magick::DrawablePopClipPath *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePopClipPath_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePopClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePopClipPath_copy" "', argument " "1"" of type '" "Magick::DrawablePopClipPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePopClipPath * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePopClipPath const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushClipPath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePushClipPath__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::DrawablePushClipPath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePushClipPath__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePushClipPath" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePushClipPath" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawablePushClipPath *)new Magick::DrawablePushClipPath((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushClipPath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePushClipPath__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawablePushClipPath *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawablePushClipPath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePushClipPath__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawablePushClipPath,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePushClipPath" "', argument " "1"" of type '" "Magick::DrawablePushClipPath const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePushClipPath" "', argument " "1"" of type '" "Magick::DrawablePushClipPath const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawablePushClipPath * >(argp1);{
    try {
      result = (Magick::DrawablePushClipPath *)new Magick::DrawablePushClipPath((Magick::DrawablePushClipPath const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushClipPath_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePushClipPath_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawablePushClipPath;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePushClipPath__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePushClipPath__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePushClipPath__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePushClipPath__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawablePushClipPath");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushClipPath_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePushClipPath_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushClipPath_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePushClipPath_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePushClipPath *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePushClipPath_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePushClipPath *arg1 = (Magick::DrawablePushClipPath *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePushClipPath_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePushClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePushClipPath_call" "', argument " "1"" of type '" "Magick::DrawablePushClipPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePushClipPath * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePushClipPath_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePushClipPath const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePushClipPath_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePushClipPath *arg1 = (Magick::DrawablePushClipPath *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePushClipPath_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePushClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePushClipPath_copy" "', argument " "1"" of type '" "Magick::DrawablePushClipPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePushClipPath * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePushClipPath const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableClipPath__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::DrawableClipPath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableClipPath__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableClipPath" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableClipPath" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableClipPath *)new Magick::DrawableClipPath((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableClipPath__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableClipPath *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableClipPath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableClipPath__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableClipPath,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableClipPath" "', argument " "1"" of type '" "Magick::DrawableClipPath const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableClipPath" "', argument " "1"" of type '" "Magick::DrawableClipPath const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableClipPath * >(argp1);{
    try {
      result = (Magick::DrawableClipPath *)new Magick::DrawableClipPath((Magick::DrawableClipPath const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_Magick_DrawableClipPath_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableClipPath;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableClipPath__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableClipPath__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableClipPath__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableClipPath__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableClipPath");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_Magick_DrawableClipPath_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableClipPath_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableClipPath *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipPath_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipPath *arg1 = (Magick::DrawableClipPath *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableClipPath_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipPath_call" "', argument " "1"" of type '" "Magick::DrawableClipPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipPath * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableClipPath_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableClipPath const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipPath_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipPath *arg1 = (Magick::DrawableClipPath *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableClipPath_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipPath_copy" "', argument " "1"" of type '" "Magick::DrawableClipPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipPath * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableClipPath const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipPath_clip_path__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipPath *arg1 = (Magick::DrawableClipPath *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipPath_clip_path" "', argument " "1"" of type '" "Magick::DrawableClipPath *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipPath * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableClipPath_clip_path" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableClipPath_clip_path" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clip_path((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableClipPath_clip_path__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableClipPath *arg1 = (Magick::DrawableClipPath *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableClipPath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableClipPath_clip_path" "', argument " "1"" of type '" "Magick::DrawableClipPath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableClipPath * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableClipPath const *)arg1)->clip_path();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableClipPath_templ<SWIG_OBJ_WRAP>::_wrap_DrawableClipPath__wrap_Magick_DrawableClipPath_clip_path(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableClipPath_clip_path__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableClipPath_clip_path__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableClipPath_clip_path__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableClipPath_clip_path__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function clip_path.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_Magick_DrawableCircle_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableCircle;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  Magick::DrawableCircle *result;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCircle.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableCircle" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableCircle" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableCircle" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableCircle" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    try {
      result = (Magick::DrawableCircle *)new Magick::DrawableCircle(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_Magick_DrawableCircle_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableCircle_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableCircle *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableCircle_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_call" "', argument " "1"" of type '" "Magick::DrawableCircle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableCircle_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableCircle const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableCircle_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_copy" "', argument " "1"" of type '" "Magick::DrawableCircle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableCircle const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_originX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_originX" "', argument " "1"" of type '" "Magick::DrawableCircle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCircle_originX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->originX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_originX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_originX" "', argument " "1"" of type '" "Magick::DrawableCircle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCircle const *)arg1)->originX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_originX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_originX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_originX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_originX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_originX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function originX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_originY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_originY" "', argument " "1"" of type '" "Magick::DrawableCircle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCircle_originY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->originY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_originY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_originY" "', argument " "1"" of type '" "Magick::DrawableCircle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCircle const *)arg1)->originY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_originY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_originY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_originY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_originY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_originY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function originY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_perimX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_perimX" "', argument " "1"" of type '" "Magick::DrawableCircle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCircle_perimX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->perimX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_perimX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_perimX" "', argument " "1"" of type '" "Magick::DrawableCircle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCircle const *)arg1)->perimX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_perimX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_perimX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_perimX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_perimX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_perimX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function perimX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_perimY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_perimY" "', argument " "1"" of type '" "Magick::DrawableCircle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCircle_perimY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->perimY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCircle_perimY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCircle *arg1 = (Magick::DrawableCircle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCircle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCircle_perimY" "', argument " "1"" of type '" "Magick::DrawableCircle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCircle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCircle const *)arg1)->perimY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCircle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCircle__wrap_Magick_DrawableCircle_perimY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_perimY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_perimY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCircle_perimY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCircle_perimY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function perimY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableColor_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableColor;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  Magick::PaintMethod arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::DrawableColor *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableColor.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableColor" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableColor" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableColor" "', argument " "3"" of type '" "Magick::PaintMethod""'");
  } 
  arg3 = static_cast< Magick::PaintMethod >(val3);{
    try {
      result = (Magick::DrawableColor *)new Magick::DrawableColor(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableColor_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableColor_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableColor *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableColor_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_call" "', argument " "1"" of type '" "Magick::DrawableColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableColor_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableColor const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableColor_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_copy" "', argument " "1"" of type '" "Magick::DrawableColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableColor const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_x" "', argument " "1"" of type '" "Magick::DrawableColor *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableColor_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_x" "', argument " "1"" of type '" "Magick::DrawableColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableColor const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_DrawableColor__wrap_Magick_DrawableColor_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableColor_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableColor_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableColor_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableColor_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_y" "', argument " "1"" of type '" "Magick::DrawableColor *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableColor_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_y" "', argument " "1"" of type '" "Magick::DrawableColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableColor const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_DrawableColor__wrap_Magick_DrawableColor_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableColor_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableColor_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableColor_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableColor_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_paintMethod__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  Magick::PaintMethod arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_paintMethod" "', argument " "1"" of type '" "Magick::DrawableColor *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableColor_paintMethod" "', argument " "2"" of type '" "Magick::PaintMethod""'");
    } 
    arg2 = static_cast< Magick::PaintMethod >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->paintMethod(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableColor_paintMethod__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableColor *arg1 = (Magick::DrawableColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::PaintMethod result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableColor_paintMethod" "', argument " "1"" of type '" "Magick::DrawableColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::PaintMethod)((Magick::DrawableColor const *)arg1)->paintMethod();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableColor_templ<SWIG_OBJ_WRAP>::_wrap_DrawableColor__wrap_Magick_DrawableColor_paintMethod(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableColor_paintMethod__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableColor_paintMethod__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableColor_paintMethod__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableColor_paintMethod__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function paintMethod.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableCompositeImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  std::string *arg3 = 0 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  Magick::DrawableCompositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCompositeImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    {
      std::string *ptr = (std::string *)0;
      res3 = SWIG_AsPtr_std_string(info[2], &ptr);
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      arg3 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableCompositeImage *)new Magick::DrawableCompositeImage(arg1,arg2,(std::string const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res3)) delete arg3;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableCompositeImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  Magick::Image *arg3 = 0 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  Magick::DrawableCompositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCompositeImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Image * >(argp3);{
    try {
      result = (Magick::DrawableCompositeImage *)new Magick::DrawableCompositeImage(arg1,arg2,(Magick::Image const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableCompositeImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  std::string *arg5 = 0 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  int res5 = SWIG_OLDOBJ ;
  Magick::DrawableCompositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCompositeImage__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    {
      std::string *ptr = (std::string *)0;
      res5 = SWIG_AsPtr_std_string(info[4], &ptr);
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "std::string const &""'"); 
      }
      arg5 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableCompositeImage *)new Magick::DrawableCompositeImage(arg1,arg2,arg3,arg4,(std::string const &)*arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res5)) delete arg5;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableCompositeImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  Magick::Image *arg5 = 0 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  Magick::DrawableCompositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCompositeImage__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);res5 = SWIG_ConvertPtr(info[4], &argp5, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res5)) {
    SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp5) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "Magick::Image const &""'"); 
  }
  arg5 = reinterpret_cast< Magick::Image * >(argp5);{
    try {
      result = (Magick::DrawableCompositeImage *)new Magick::DrawableCompositeImage(arg1,arg2,arg3,arg4,(Magick::Image const &)*arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableCompositeImage__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  std::string *arg5 = 0 ;
  Magick::CompositeOperator arg6 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  int res5 = SWIG_OLDOBJ ;
  int val6 ;
  int ecode6 = 0 ;
  Magick::DrawableCompositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCompositeImage__SWIG_4.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    {
      std::string *ptr = (std::string *)0;
      res5 = SWIG_AsPtr_std_string(info[4], &ptr);
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "std::string const &""'"); 
      }
      arg5 = ptr;
    }
  }
  ecode6 = SWIG_AsVal_int(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "6"" of type '" "Magick::CompositeOperator""'");
  } 
  arg6 = static_cast< Magick::CompositeOperator >(val6);{
    try {
      result = (Magick::DrawableCompositeImage *)new Magick::DrawableCompositeImage(arg1,arg2,arg3,arg4,(std::string const &)*arg5,arg6);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res5)) delete arg5;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableCompositeImage__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  Magick::Image *arg5 = 0 ;
  Magick::CompositeOperator arg6 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  int val6 ;
  int ecode6 = 0 ;
  Magick::DrawableCompositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCompositeImage__SWIG_5.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);res5 = SWIG_ConvertPtr(info[4], &argp5, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res5)) {
    SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp5) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableCompositeImage" "', argument " "5"" of type '" "Magick::Image const &""'"); 
  }
  arg5 = reinterpret_cast< Magick::Image * >(argp5);ecode6 = SWIG_AsVal_int(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "6"" of type '" "Magick::CompositeOperator""'");
  } 
  arg6 = static_cast< Magick::CompositeOperator >(val6);{
    try {
      result = (Magick::DrawableCompositeImage *)new Magick::DrawableCompositeImage(arg1,arg2,arg3,arg4,(Magick::Image const &)*arg5,arg6);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableCompositeImage__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableCompositeImage *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableCompositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableCompositeImage__SWIG_6.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableCompositeImage,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableCompositeImage" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);{
    try {
      result = (Magick::DrawableCompositeImage *)new Magick::DrawableCompositeImage((Magick::DrawableCompositeImage const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_Magick_DrawableCompositeImage_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableCompositeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableCompositeImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableCompositeImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableCompositeImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableCompositeImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableCompositeImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableCompositeImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableCompositeImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableCompositeImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 6 && static_cast<int>(info.Length()) <= 6) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableCompositeImage__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableCompositeImage__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 6 && static_cast<int>(info.Length()) <= 6) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableCompositeImage__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableCompositeImage__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableCompositeImage__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableCompositeImage__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableCompositeImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_Magick_DrawableCompositeImage_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableCompositeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableCompositeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  Magick::DrawableCompositeImage *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableCompositeImage *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableCompositeImage_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_clone" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__DrawableCompositeImage,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableCompositeImage_clone" "', argument " "2"" of type '" "Magick::DrawableCompositeImage const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableCompositeImage_clone" "', argument " "2"" of type '" "Magick::DrawableCompositeImage const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableCompositeImage *) &(arg1)->operator =((Magick::DrawableCompositeImage const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableCompositeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_call" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableCompositeImage_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableCompositeImage const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableCompositeImage_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_copy" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableCompositeImage const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_composition__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  Magick::CompositeOperator arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_composition" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCompositeImage_composition" "', argument " "2"" of type '" "Magick::CompositeOperator""'");
    } 
    arg2 = static_cast< Magick::CompositeOperator >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->composition(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_composition__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::CompositeOperator result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_composition" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::CompositeOperator)((Magick::DrawableCompositeImage const *)arg1)->composition();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_composition(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_composition__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_composition__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_composition__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_composition__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function composition.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_filename__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_filename" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableCompositeImage_filename" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableCompositeImage_filename" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->filename((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_filename__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_filename" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableCompositeImage const *)arg1)->filename();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_filename(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_filename__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_filename__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_filename__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_filename__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function filename.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_x" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCompositeImage_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_x" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCompositeImage const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_y" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCompositeImage_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_y" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCompositeImage const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_width__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_width" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCompositeImage_width" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->width(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_width__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_width" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCompositeImage const *)arg1)->width();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_width(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_width__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_width__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_width__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_width__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function width.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_height__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_height" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableCompositeImage_height" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->height(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_height__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_height" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableCompositeImage const *)arg1)->height();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_height(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_height__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_height__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_height__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_height__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function height.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_image__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_image" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableCompositeImage_image" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableCompositeImage_image" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->image((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_image__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_image" "', argument " "1"" of type '" "Magick::DrawableCompositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableCompositeImage const *)arg1)->image();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_image(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_image__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_image__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_image__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_image__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function image.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_magick__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_magick" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_DrawableCompositeImage_magick" "', argument " "2"" of type '" "std::string""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->magick(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableCompositeImage_magick__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableCompositeImage *arg1 = (Magick::DrawableCompositeImage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableCompositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableCompositeImage_magick" "', argument " "1"" of type '" "Magick::DrawableCompositeImage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableCompositeImage * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (arg1)->magick();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableCompositeImage_templ<SWIG_OBJ_WRAP>::_wrap_DrawableCompositeImage__wrap_Magick_DrawableCompositeImage_magick(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_magick__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_magick__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableCompositeImage_magick__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableCompositeImage_magick__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function magick.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableDensity_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableDensity__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Point *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableDensity *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableDensity__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Point,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableDensity" "', argument " "1"" of type '" "Magick::Point const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableDensity" "', argument " "1"" of type '" "Magick::Point const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Point * >(argp1);{
    try {
      result = (Magick::DrawableDensity *)new Magick::DrawableDensity((Magick::Point const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableDensity_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableDensity__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::DrawableDensity *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableDensity__SWIG_1.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableDensity" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableDensity" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableDensity *)new Magick::DrawableDensity((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableDensity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableDensity_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableDensity;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableDensity__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableDensity__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableDensity__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableDensity__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableDensity");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableDensity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableDensity_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableDensity_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableDensity_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableDensity *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableDensity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableDensity_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableDensity *arg1 = (Magick::DrawableDensity *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableDensity_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableDensity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableDensity_call" "', argument " "1"" of type '" "Magick::DrawableDensity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableDensity * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableDensity_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableDensity const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableDensity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableDensity_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableDensity *arg1 = (Magick::DrawableDensity *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableDensity_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableDensity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableDensity_copy" "', argument " "1"" of type '" "Magick::DrawableDensity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableDensity * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableDensity const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_Magick_DrawableEllipse_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableEllipse;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  double arg6 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  Magick::DrawableEllipse *result;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableEllipse.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableEllipse" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableEllipse" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableEllipse" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableEllipse" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_DrawableEllipse" "', argument " "5"" of type '" "double""'");
  } 
  arg5 = static_cast< double >(val5);ecode6 = SWIG_AsVal_double(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_DrawableEllipse" "', argument " "6"" of type '" "double""'");
  } 
  arg6 = static_cast< double >(val6);{
    try {
      result = (Magick::DrawableEllipse *)new Magick::DrawableEllipse(arg1,arg2,arg3,arg4,arg5,arg6);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_Magick_DrawableEllipse_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableEllipse_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableEllipse *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableEllipse_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_call" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableEllipse_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableEllipse const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableEllipse_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_copy" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableEllipse const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_originX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_originX" "', argument " "1"" of type '" "Magick::DrawableEllipse *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableEllipse_originX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->originX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_originX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_originX" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableEllipse const *)arg1)->originX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_originX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_originX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_originX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_originX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_originX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function originX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_originY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_originY" "', argument " "1"" of type '" "Magick::DrawableEllipse *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableEllipse_originY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->originY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_originY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_originY" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableEllipse const *)arg1)->originY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_originY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_originY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_originY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_originY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_originY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function originY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_radiusX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_radiusX" "', argument " "1"" of type '" "Magick::DrawableEllipse *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableEllipse_radiusX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->radiusX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_radiusX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_radiusX" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableEllipse const *)arg1)->radiusX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_radiusX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_radiusX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_radiusX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_radiusX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_radiusX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function radiusX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_radiusY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_radiusY" "', argument " "1"" of type '" "Magick::DrawableEllipse *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableEllipse_radiusY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->radiusY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_radiusY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_radiusY" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableEllipse const *)arg1)->radiusY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_radiusY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_radiusY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_radiusY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_radiusY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_radiusY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function radiusY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_arcStart__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_arcStart" "', argument " "1"" of type '" "Magick::DrawableEllipse *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableEllipse_arcStart" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->arcStart(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_arcStart__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_arcStart" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableEllipse const *)arg1)->arcStart();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_arcStart(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_arcStart__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_arcStart__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_arcStart__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_arcStart__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function arcStart.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_arcEnd__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_arcEnd" "', argument " "1"" of type '" "Magick::DrawableEllipse *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableEllipse_arcEnd" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->arcEnd(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableEllipse_arcEnd__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableEllipse *arg1 = (Magick::DrawableEllipse *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableEllipse, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableEllipse_arcEnd" "', argument " "1"" of type '" "Magick::DrawableEllipse const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableEllipse * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableEllipse const *)arg1)->arcEnd();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableEllipse_templ<SWIG_OBJ_WRAP>::_wrap_DrawableEllipse__wrap_Magick_DrawableEllipse_arcEnd(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_arcEnd__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_arcEnd__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableEllipse_arcEnd__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableEllipse_arcEnd__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function arcEnd.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableFillColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::DrawableFillColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFillColor__SWIG_0.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_DrawableFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::DrawableFillColor *)new Magick::DrawableFillColor((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableFillColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableFillColor *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableFillColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFillColor__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableFillColor,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableFillColor" "', argument " "1"" of type '" "Magick::DrawableFillColor const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFillColor" "', argument " "1"" of type '" "Magick::DrawableFillColor const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableFillColor * >(argp1);{
    try {
      result = (Magick::DrawableFillColor *)new Magick::DrawableFillColor((Magick::DrawableFillColor const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillColor_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableFillColor;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableFillColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableFillColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableFillColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableFillColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableFillColor");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillColor_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableFillColor_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableFillColor *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillColor_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillColor *arg1 = (Magick::DrawableFillColor *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillColor_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillColor_call" "', argument " "1"" of type '" "Magick::DrawableFillColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillColor * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableFillColor_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableFillColor const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillColor_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillColor *arg1 = (Magick::DrawableFillColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillColor_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillColor_copy" "', argument " "1"" of type '" "Magick::DrawableFillColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableFillColor const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillColor_color__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillColor *arg1 = (Magick::DrawableFillColor *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillColor_color" "', argument " "1"" of type '" "Magick::DrawableFillColor *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillColor * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_DrawableFillColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableFillColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_DrawableFillColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableFillColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->color((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillColor_color__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillColor *arg1 = (Magick::DrawableFillColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillColor_color" "', argument " "1"" of type '" "Magick::DrawableFillColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableFillColor const *)arg1)->color();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillColor_templ<SWIG_OBJ_WRAP>::_wrap_DrawableFillColor__wrap_Magick_DrawableFillColor_color(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillColor_color__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillColor_color__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillColor_color__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillColor_color__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function color.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableFillPatternUrl__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::DrawableFillPatternUrl *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFillPatternUrl__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableFillPatternUrl" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFillPatternUrl" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableFillPatternUrl *)new Magick::DrawableFillPatternUrl((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableFillPatternUrl_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableFillPatternUrl *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableFillPatternUrl__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableFillPatternUrl *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableFillPatternUrl *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFillPatternUrl__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableFillPatternUrl,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableFillPatternUrl" "', argument " "1"" of type '" "Magick::DrawableFillPatternUrl const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFillPatternUrl" "', argument " "1"" of type '" "Magick::DrawableFillPatternUrl const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableFillPatternUrl * >(argp1);{
    try {
      result = (Magick::DrawableFillPatternUrl *)new Magick::DrawableFillPatternUrl((Magick::DrawableFillPatternUrl const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillPatternUrl_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableFillPatternUrl;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableFillPatternUrl__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableFillPatternUrl__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableFillPatternUrl__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableFillPatternUrl__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableFillPatternUrl");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillPatternUrl_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillPatternUrl_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillPatternUrl *arg1 = (Magick::DrawableFillPatternUrl *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillPatternUrl_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillPatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillPatternUrl_call" "', argument " "1"" of type '" "Magick::DrawableFillPatternUrl const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillPatternUrl * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableFillPatternUrl_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableFillPatternUrl const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillPatternUrl_url__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillPatternUrl *arg1 = (Magick::DrawableFillPatternUrl *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillPatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillPatternUrl_url" "', argument " "1"" of type '" "Magick::DrawableFillPatternUrl *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillPatternUrl * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableFillPatternUrl_url" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableFillPatternUrl_url" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->url((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillPatternUrl_url__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillPatternUrl *arg1 = (Magick::DrawableFillPatternUrl *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillPatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillPatternUrl_url" "', argument " "1"" of type '" "Magick::DrawableFillPatternUrl const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillPatternUrl * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableFillPatternUrl const *)arg1)->url();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_DrawableFillPatternUrl__wrap_Magick_DrawableFillPatternUrl_url(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillPatternUrl_url__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillPatternUrl_url__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillPatternUrl_url__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillPatternUrl_url__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function url.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillPatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillPatternUrl_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillPatternUrl *arg1 = (Magick::DrawableFillPatternUrl *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillPatternUrl_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillPatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillPatternUrl_copy" "', argument " "1"" of type '" "Magick::DrawableFillPatternUrl const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillPatternUrl * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableFillPatternUrl const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillRule_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableFillRule;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::FillRule arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableFillRule *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFillRule.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableFillRule" "', argument " "1"" of type '" "Magick::FillRule""'");
  } 
  arg1 = static_cast< Magick::FillRule >(val1);{
    try {
      result = (Magick::DrawableFillRule *)new Magick::DrawableFillRule(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillRule_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableFillRule_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableFillRule *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillRule_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillRule *arg1 = (Magick::DrawableFillRule *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillRule_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillRule_call" "', argument " "1"" of type '" "Magick::DrawableFillRule const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillRule * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableFillRule_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableFillRule const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillRule_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillRule *arg1 = (Magick::DrawableFillRule *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillRule_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillRule_copy" "', argument " "1"" of type '" "Magick::DrawableFillRule const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillRule * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableFillRule const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillRule_fillRule__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillRule *arg1 = (Magick::DrawableFillRule *) 0 ;
  Magick::FillRule arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillRule_fillRule" "', argument " "1"" of type '" "Magick::DrawableFillRule *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillRule * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableFillRule_fillRule" "', argument " "2"" of type '" "Magick::FillRule""'");
    } 
    arg2 = static_cast< Magick::FillRule >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fillRule(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillRule_fillRule__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillRule *arg1 = (Magick::DrawableFillRule *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::FillRule result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillRule, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillRule_fillRule" "', argument " "1"" of type '" "Magick::DrawableFillRule const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillRule * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::FillRule)((Magick::DrawableFillRule const *)arg1)->fillRule();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillRule_templ<SWIG_OBJ_WRAP>::_wrap_DrawableFillRule__wrap_Magick_DrawableFillRule_fillRule(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillRule_fillRule__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillRule_fillRule__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillRule_fillRule__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillRule_fillRule__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillRule.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillOpacity_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableFillOpacity;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableFillOpacity *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFillOpacity.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableFillOpacity" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableFillOpacity *)new Magick::DrawableFillOpacity(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFillOpacity_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableFillOpacity_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableFillOpacity *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillOpacity_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillOpacity *arg1 = (Magick::DrawableFillOpacity *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillOpacity_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillOpacity_call" "', argument " "1"" of type '" "Magick::DrawableFillOpacity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillOpacity * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableFillOpacity_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableFillOpacity const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillOpacity_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillOpacity *arg1 = (Magick::DrawableFillOpacity *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFillOpacity_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillOpacity_copy" "', argument " "1"" of type '" "Magick::DrawableFillOpacity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillOpacity * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableFillOpacity const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillOpacity_opacity__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillOpacity *arg1 = (Magick::DrawableFillOpacity *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillOpacity_opacity" "', argument " "1"" of type '" "Magick::DrawableFillOpacity *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillOpacity * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableFillOpacity_opacity" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->opacity(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFillOpacity_opacity__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFillOpacity *arg1 = (Magick::DrawableFillOpacity *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFillOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFillOpacity_opacity" "', argument " "1"" of type '" "Magick::DrawableFillOpacity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFillOpacity * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableFillOpacity const *)arg1)->opacity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFillOpacity_templ<SWIG_OBJ_WRAP>::_wrap_DrawableFillOpacity__wrap_Magick_DrawableFillOpacity_opacity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillOpacity_opacity__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillOpacity_opacity__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFillOpacity_opacity__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFillOpacity_opacity__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function opacity.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableFont__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::DrawableFont *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFont__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableFont" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFont" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableFont *)new Magick::DrawableFont((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableFont__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::StyleType arg2 ;
  unsigned int arg3 ;
  Magick::StretchType arg4 ;
  int res1 = SWIG_OLDOBJ ;
  int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  Magick::DrawableFont *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFont__SWIG_1.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableFont" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFont" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableFont" "', argument " "2"" of type '" "Magick::StyleType""'");
  } 
  arg2 = static_cast< Magick::StyleType >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableFont" "', argument " "3"" of type '" "unsigned int""'");
  } 
  arg3 = static_cast< unsigned int >(val3);ecode4 = SWIG_AsVal_int(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableFont" "', argument " "4"" of type '" "Magick::StretchType""'");
  } 
  arg4 = static_cast< Magick::StretchType >(val4);{
    try {
      result = (Magick::DrawableFont *)new Magick::DrawableFont((std::string const &)*arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableFont__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableFont *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableFont *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableFont__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableFont,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableFont" "', argument " "1"" of type '" "Magick::DrawableFont const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableFont" "', argument " "1"" of type '" "Magick::DrawableFont const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableFont * >(argp1);{
    try {
      result = (Magick::DrawableFont *)new Magick::DrawableFont((Magick::DrawableFont const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFont_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableFont;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableFont__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableFont__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableFont__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableFont__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableFont__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableFont__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableFont");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_Magick_DrawableFont_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableFont_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableFont *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFont_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFont *arg1 = (Magick::DrawableFont *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFont_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFont, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFont_call" "', argument " "1"" of type '" "Magick::DrawableFont const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFont * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableFont_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableFont const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFont_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFont *arg1 = (Magick::DrawableFont *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableFont_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFont, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFont_copy" "', argument " "1"" of type '" "Magick::DrawableFont const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFont * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableFont const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFont_font__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFont *arg1 = (Magick::DrawableFont *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFont, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFont_font" "', argument " "1"" of type '" "Magick::DrawableFont *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFont * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableFont_font" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableFont_font" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->font((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableFont_font__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableFont *arg1 = (Magick::DrawableFont *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableFont, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableFont_font" "', argument " "1"" of type '" "Magick::DrawableFont const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableFont * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableFont const *)arg1)->font();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableFont_templ<SWIG_OBJ_WRAP>::_wrap_DrawableFont__wrap_Magick_DrawableFont_font(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFont_font__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFont_font__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableFont_font__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableFont_font__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function font.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableGravity_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableGravity;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::GravityType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableGravity *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableGravity.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableGravity" "', argument " "1"" of type '" "Magick::GravityType""'");
  } 
  arg1 = static_cast< Magick::GravityType >(val1);{
    try {
      result = (Magick::DrawableGravity *)new Magick::DrawableGravity(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableGravity_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableGravity_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableGravity *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableGravity_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableGravity *arg1 = (Magick::DrawableGravity *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableGravity_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableGravity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableGravity_call" "', argument " "1"" of type '" "Magick::DrawableGravity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableGravity * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableGravity_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableGravity const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableGravity_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableGravity *arg1 = (Magick::DrawableGravity *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableGravity_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableGravity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableGravity_copy" "', argument " "1"" of type '" "Magick::DrawableGravity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableGravity * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableGravity const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableGravity_gravity__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableGravity *arg1 = (Magick::DrawableGravity *) 0 ;
  Magick::GravityType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableGravity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableGravity_gravity" "', argument " "1"" of type '" "Magick::DrawableGravity *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableGravity * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableGravity_gravity" "', argument " "2"" of type '" "Magick::GravityType""'");
    } 
    arg2 = static_cast< Magick::GravityType >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->gravity(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableGravity_gravity__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableGravity *arg1 = (Magick::DrawableGravity *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::GravityType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableGravity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableGravity_gravity" "', argument " "1"" of type '" "Magick::DrawableGravity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableGravity * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::GravityType)((Magick::DrawableGravity const *)arg1)->gravity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableGravity_templ<SWIG_OBJ_WRAP>::_wrap_DrawableGravity__wrap_Magick_DrawableGravity_gravity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableGravity_gravity__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableGravity_gravity__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableGravity_gravity__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableGravity_gravity__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gravity.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_Magick_DrawableLine_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableLine;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  Magick::DrawableLine *result;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableLine.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableLine" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableLine" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableLine" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableLine" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    try {
      result = (Magick::DrawableLine *)new Magick::DrawableLine(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_Magick_DrawableLine_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableLine_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableLine *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableLine_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_call" "', argument " "1"" of type '" "Magick::DrawableLine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableLine_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableLine const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableLine_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_copy" "', argument " "1"" of type '" "Magick::DrawableLine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableLine const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_startX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_startX" "', argument " "1"" of type '" "Magick::DrawableLine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableLine_startX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->startX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_startX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_startX" "', argument " "1"" of type '" "Magick::DrawableLine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableLine const *)arg1)->startX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableLine__wrap_Magick_DrawableLine_startX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_startX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_startX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_startX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_startX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function startX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_startY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_startY" "', argument " "1"" of type '" "Magick::DrawableLine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableLine_startY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->startY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_startY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_startY" "', argument " "1"" of type '" "Magick::DrawableLine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableLine const *)arg1)->startY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableLine__wrap_Magick_DrawableLine_startY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_startY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_startY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_startY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_startY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function startY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_endX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_endX" "', argument " "1"" of type '" "Magick::DrawableLine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableLine_endX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->endX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_endX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_endX" "', argument " "1"" of type '" "Magick::DrawableLine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableLine const *)arg1)->endX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableLine__wrap_Magick_DrawableLine_endX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_endX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_endX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_endX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_endX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function endX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_endY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_endY" "', argument " "1"" of type '" "Magick::DrawableLine *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableLine_endY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->endY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableLine_endY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableLine *arg1 = (Magick::DrawableLine *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableLine, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableLine_endY" "', argument " "1"" of type '" "Magick::DrawableLine const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableLine * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableLine const *)arg1)->endY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableLine_templ<SWIG_OBJ_WRAP>::_wrap_DrawableLine__wrap_Magick_DrawableLine_endY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_endY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_endY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableLine_endY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableLine_endY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function endY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePath__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::VPathList *arg1 = 0 ;
  Magick::DrawablePath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePath__SWIG_0.");
  }
  {
    {
      if (info[0].IsArray()) {
        arg1 = new Magick::VPathList;
        Napi::Array array = info[0].As<Napi::Array>();
        for (size_t i = 0; i < array.Length(); i++) {
          Magick::VPathBase *p = nullptr;
          if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&p), SWIGTYPE_p_Magick__VPathBase, 0)) || p == nullptr) {
            SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_DrawablePath', array element is not a Magick::VPath");
          }
          // Emplace the newly constructed surrogates in the std::container
          arg1->emplace_back(Magick::VPath(*p));
        }
      } else {
        SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_DrawablePath', argument 1 is not an array");
      }
    }
  }
  {
    try {
      result = (Magick::DrawablePath *)new Magick::DrawablePath((Magick::VPathList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  {
    delete arg1;
  }
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePath_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePath__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawablePath *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawablePath *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePath__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawablePath,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePath" "', argument " "1"" of type '" "Magick::DrawablePath const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePath" "', argument " "1"" of type '" "Magick::DrawablePath const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawablePath * >(argp1);{
    try {
      result = (Magick::DrawablePath *)new Magick::DrawablePath((Magick::DrawablePath const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePath_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePath_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawablePath;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePath__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePath__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePath__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePath__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawablePath");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePath_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePath_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePath_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePath_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePath *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePath_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePath *arg1 = (Magick::DrawablePath *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePath_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePath_call" "', argument " "1"" of type '" "Magick::DrawablePath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePath * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePath_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePath const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePath_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePath *arg1 = (Magick::DrawablePath *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePath_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePath_copy" "', argument " "1"" of type '" "Magick::DrawablePath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePath * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePath const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePoint_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawablePoint;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::DrawablePoint *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePoint.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawablePoint" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawablePoint" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::DrawablePoint *)new Magick::DrawablePoint(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePoint_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePoint_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePoint *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePoint_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePoint *arg1 = (Magick::DrawablePoint *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePoint_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePoint, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePoint_call" "', argument " "1"" of type '" "Magick::DrawablePoint const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePoint * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePoint_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePoint const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePoint_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePoint *arg1 = (Magick::DrawablePoint *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePoint_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePoint, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePoint_copy" "', argument " "1"" of type '" "Magick::DrawablePoint const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePoint * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePoint const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePoint_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePoint *arg1 = (Magick::DrawablePoint *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePoint, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePoint_x" "', argument " "1"" of type '" "Magick::DrawablePoint *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePoint * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawablePoint_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePoint_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePoint *arg1 = (Magick::DrawablePoint *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePoint, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePoint_x" "', argument " "1"" of type '" "Magick::DrawablePoint const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePoint * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawablePoint const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_DrawablePoint__wrap_Magick_DrawablePoint_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawablePoint_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawablePoint_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawablePoint_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawablePoint_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePoint_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePoint *arg1 = (Magick::DrawablePoint *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePoint, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePoint_y" "', argument " "1"" of type '" "Magick::DrawablePoint *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePoint * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawablePoint_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePoint_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePoint *arg1 = (Magick::DrawablePoint *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePoint, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePoint_y" "', argument " "1"" of type '" "Magick::DrawablePoint const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePoint * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawablePoint const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePoint_templ<SWIG_OBJ_WRAP>::_wrap_DrawablePoint__wrap_Magick_DrawablePoint_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawablePoint_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawablePoint_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawablePoint_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawablePoint_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePointSize_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawablePointSize;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawablePointSize *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePointSize.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawablePointSize" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawablePointSize *)new Magick::DrawablePointSize(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePointSize_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePointSize_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePointSize *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePointSize_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePointSize *arg1 = (Magick::DrawablePointSize *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePointSize_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePointSize, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePointSize_call" "', argument " "1"" of type '" "Magick::DrawablePointSize const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePointSize * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePointSize_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePointSize const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePointSize_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePointSize *arg1 = (Magick::DrawablePointSize *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePointSize_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePointSize, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePointSize_copy" "', argument " "1"" of type '" "Magick::DrawablePointSize const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePointSize * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePointSize const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePointSize_pointSize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePointSize *arg1 = (Magick::DrawablePointSize *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePointSize, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePointSize_pointSize" "', argument " "1"" of type '" "Magick::DrawablePointSize *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePointSize * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawablePointSize_pointSize" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->pointSize(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePointSize_pointSize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePointSize *arg1 = (Magick::DrawablePointSize *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePointSize, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePointSize_pointSize" "', argument " "1"" of type '" "Magick::DrawablePointSize const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePointSize * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawablePointSize const *)arg1)->pointSize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePointSize_templ<SWIG_OBJ_WRAP>::_wrap_DrawablePointSize__wrap_Magick_DrawablePointSize_pointSize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawablePointSize_pointSize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawablePointSize_pointSize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawablePointSize_pointSize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawablePointSize_pointSize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function pointSize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolygon_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePolygon__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawablePolygon *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePolygon__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePolygon" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePolygon" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::DrawablePolygon *)new Magick::DrawablePolygon((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolygon_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePolygon__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawablePolygon *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawablePolygon *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePolygon__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawablePolygon,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePolygon" "', argument " "1"" of type '" "Magick::DrawablePolygon const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePolygon" "', argument " "1"" of type '" "Magick::DrawablePolygon const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawablePolygon * >(argp1);{
    try {
      result = (Magick::DrawablePolygon *)new Magick::DrawablePolygon((Magick::DrawablePolygon const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePolygon_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePolygon_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawablePolygon;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePolygon__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePolygon__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePolygon__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePolygon__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawablePolygon");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePolygon_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePolygon_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePolygon_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePolygon_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePolygon *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolygon_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePolygon_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePolygon *arg1 = (Magick::DrawablePolygon *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePolygon_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePolygon, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePolygon_call" "', argument " "1"" of type '" "Magick::DrawablePolygon const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePolygon * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePolygon_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePolygon const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolygon_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePolygon_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePolygon *arg1 = (Magick::DrawablePolygon *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePolygon_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePolygon, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePolygon_copy" "', argument " "1"" of type '" "Magick::DrawablePolygon const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePolygon * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePolygon const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolyline_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePolyline__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawablePolyline *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePolyline__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePolyline" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePolyline" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::DrawablePolyline *)new Magick::DrawablePolyline((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolyline_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePolyline__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawablePolyline *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawablePolyline *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePolyline__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawablePolyline,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePolyline" "', argument " "1"" of type '" "Magick::DrawablePolyline const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePolyline" "', argument " "1"" of type '" "Magick::DrawablePolyline const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawablePolyline * >(argp1);{
    try {
      result = (Magick::DrawablePolyline *)new Magick::DrawablePolyline((Magick::DrawablePolyline const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePolyline_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePolyline_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawablePolyline;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePolyline__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePolyline__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePolyline__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePolyline__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawablePolyline");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePolyline_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePolyline_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePolyline_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePolyline_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePolyline *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolyline_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePolyline_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePolyline *arg1 = (Magick::DrawablePolyline *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePolyline_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePolyline, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePolyline_call" "', argument " "1"" of type '" "Magick::DrawablePolyline const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePolyline * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePolyline_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePolyline const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePolyline_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePolyline_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePolyline *arg1 = (Magick::DrawablePolyline *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePolyline_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePolyline, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePolyline_copy" "', argument " "1"" of type '" "Magick::DrawablePolyline const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePolyline * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePolyline const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawablePopGraphicContext_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePopGraphicContext_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawablePopGraphicContext;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DrawablePopGraphicContext *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePopGraphicContext.");
  }
  {
    try {
      result = (Magick::DrawablePopGraphicContext *)new Magick::DrawablePopGraphicContext();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePopGraphicContext_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePopGraphicContext_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePopGraphicContext_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePopGraphicContext_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePopGraphicContext *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePopGraphicContext_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePopGraphicContext_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePopGraphicContext *arg1 = (Magick::DrawablePopGraphicContext *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePopGraphicContext_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePopGraphicContext, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePopGraphicContext_call" "', argument " "1"" of type '" "Magick::DrawablePopGraphicContext const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePopGraphicContext * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePopGraphicContext_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePopGraphicContext const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePopGraphicContext_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePopGraphicContext_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePopGraphicContext *arg1 = (Magick::DrawablePopGraphicContext *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePopGraphicContext_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePopGraphicContext, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePopGraphicContext_copy" "', argument " "1"" of type '" "Magick::DrawablePopGraphicContext const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePopGraphicContext * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePopGraphicContext const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawablePushGraphicContext_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePushGraphicContext_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawablePushGraphicContext;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DrawablePushGraphicContext *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePushGraphicContext.");
  }
  {
    try {
      result = (Magick::DrawablePushGraphicContext *)new Magick::DrawablePushGraphicContext();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushGraphicContext_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePushGraphicContext_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushGraphicContext_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePushGraphicContext_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePushGraphicContext *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushGraphicContext_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePushGraphicContext_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePushGraphicContext *arg1 = (Magick::DrawablePushGraphicContext *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePushGraphicContext_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePushGraphicContext, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePushGraphicContext_call" "', argument " "1"" of type '" "Magick::DrawablePushGraphicContext const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePushGraphicContext * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePushGraphicContext_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePushGraphicContext const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushGraphicContext_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePushGraphicContext_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePushGraphicContext *arg1 = (Magick::DrawablePushGraphicContext *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePushGraphicContext_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePushGraphicContext, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePushGraphicContext_copy" "', argument " "1"" of type '" "Magick::DrawablePushGraphicContext const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePushGraphicContext * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePushGraphicContext const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawablePopPattern_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePopPattern_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawablePopPattern;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DrawablePopPattern *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePopPattern.");
  }
  {
    try {
      result = (Magick::DrawablePopPattern *)new Magick::DrawablePopPattern();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePopPattern_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePopPattern_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePopPattern_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePopPattern_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePopPattern *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePopPattern_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePopPattern_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePopPattern *arg1 = (Magick::DrawablePopPattern *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePopPattern_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePopPattern, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePopPattern_call" "', argument " "1"" of type '" "Magick::DrawablePopPattern const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePopPattern * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePopPattern_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePopPattern const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePopPattern_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePopPattern_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePopPattern *arg1 = (Magick::DrawablePopPattern *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePopPattern_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePopPattern, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePopPattern_copy" "', argument " "1"" of type '" "Magick::DrawablePopPattern const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePopPattern * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePopPattern const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushPattern_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePushPattern__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  size_t arg4 ;
  size_t arg5 ;
  int res1 = SWIG_OLDOBJ ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  unsigned int val5 ;
  int ecode5 = 0 ;
  Magick::DrawablePushPattern *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePushPattern__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePushPattern" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePushPattern" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawablePushPattern" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawablePushPattern" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawablePushPattern" "', argument " "4"" of type '" "size_t""'");
  } 
  arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_DrawablePushPattern" "', argument " "5"" of type '" "size_t""'");
  } 
  arg5 = static_cast< size_t >(val5);{
    try {
      result = (Magick::DrawablePushPattern *)new Magick::DrawablePushPattern((std::string const &)*arg1,arg2,arg3,arg4,arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushPattern_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawablePushPattern__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawablePushPattern *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawablePushPattern *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawablePushPattern__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawablePushPattern,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawablePushPattern" "', argument " "1"" of type '" "Magick::DrawablePushPattern const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawablePushPattern" "', argument " "1"" of type '" "Magick::DrawablePushPattern const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawablePushPattern * >(argp1);{
    try {
      result = (Magick::DrawablePushPattern *)new Magick::DrawablePushPattern((Magick::DrawablePushPattern const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushPattern_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePushPattern_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawablePushPattern;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePushPattern__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePushPattern__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawablePushPattern__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawablePushPattern__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawablePushPattern");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushPattern_templ<SWIG_OBJ_WRAP>::_Magick_DrawablePushPattern_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawablePushPattern_templ<SWIG_OBJ_WRAP>::~_Magick_DrawablePushPattern_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawablePushPattern *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushPattern_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePushPattern_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePushPattern *arg1 = (Magick::DrawablePushPattern *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePushPattern_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePushPattern, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePushPattern_call" "', argument " "1"" of type '" "Magick::DrawablePushPattern const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePushPattern * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawablePushPattern_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawablePushPattern const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawablePushPattern_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawablePushPattern_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawablePushPattern *arg1 = (Magick::DrawablePushPattern *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawablePushPattern_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawablePushPattern, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawablePushPattern_copy" "', argument " "1"" of type '" "Magick::DrawablePushPattern const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawablePushPattern * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawablePushPattern const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_Magick_DrawableRectangle_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableRectangle;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  Magick::DrawableRectangle *result;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableRectangle.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableRectangle" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableRectangle" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableRectangle" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableRectangle" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    try {
      result = (Magick::DrawableRectangle *)new Magick::DrawableRectangle(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_Magick_DrawableRectangle_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableRectangle_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableRectangle *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableRectangle_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_call" "', argument " "1"" of type '" "Magick::DrawableRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableRectangle_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableRectangle const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableRectangle_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_copy" "', argument " "1"" of type '" "Magick::DrawableRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableRectangle const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_upperLeftX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_upperLeftX" "', argument " "1"" of type '" "Magick::DrawableRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRectangle_upperLeftX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->upperLeftX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_upperLeftX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_upperLeftX" "', argument " "1"" of type '" "Magick::DrawableRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRectangle const *)arg1)->upperLeftX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_upperLeftX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_upperLeftX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_upperLeftX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_upperLeftX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_upperLeftX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function upperLeftX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_upperLeftY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_upperLeftY" "', argument " "1"" of type '" "Magick::DrawableRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRectangle_upperLeftY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->upperLeftY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_upperLeftY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_upperLeftY" "', argument " "1"" of type '" "Magick::DrawableRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRectangle const *)arg1)->upperLeftY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_upperLeftY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_upperLeftY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_upperLeftY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_upperLeftY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_upperLeftY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function upperLeftY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_lowerRightX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_lowerRightX" "', argument " "1"" of type '" "Magick::DrawableRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRectangle_lowerRightX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->lowerRightX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_lowerRightX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_lowerRightX" "', argument " "1"" of type '" "Magick::DrawableRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRectangle const *)arg1)->lowerRightX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_lowerRightX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_lowerRightX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_lowerRightX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_lowerRightX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_lowerRightX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function lowerRightX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_lowerRightY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_lowerRightY" "', argument " "1"" of type '" "Magick::DrawableRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRectangle_lowerRightY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->lowerRightY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRectangle_lowerRightY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRectangle *arg1 = (Magick::DrawableRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRectangle_lowerRightY" "', argument " "1"" of type '" "Magick::DrawableRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRectangle const *)arg1)->lowerRightY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRectangle__wrap_Magick_DrawableRectangle_lowerRightY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_lowerRightY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_lowerRightY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRectangle_lowerRightY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRectangle_lowerRightY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function lowerRightY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::_Magick_DrawableRotation_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableRotation;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableRotation *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableRotation.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableRotation" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableRotation *)new Magick::DrawableRotation(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::_Magick_DrawableRotation_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableRotation_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableRotation *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRotation_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRotation *arg1 = (Magick::DrawableRotation *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableRotation_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRotation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRotation_call" "', argument " "1"" of type '" "Magick::DrawableRotation const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRotation * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableRotation_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableRotation const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRotation_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRotation *arg1 = (Magick::DrawableRotation *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableRotation_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRotation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRotation_copy" "', argument " "1"" of type '" "Magick::DrawableRotation const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRotation * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableRotation const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRotation_angle__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRotation *arg1 = (Magick::DrawableRotation *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRotation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRotation_angle" "', argument " "1"" of type '" "Magick::DrawableRotation *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRotation * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRotation_angle" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->angle(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRotation_angle__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRotation *arg1 = (Magick::DrawableRotation *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRotation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRotation_angle" "', argument " "1"" of type '" "Magick::DrawableRotation const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRotation * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRotation const *)arg1)->angle();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRotation_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRotation__wrap_Magick_DrawableRotation_angle(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRotation_angle__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRotation_angle__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRotation_angle__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRotation_angle__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function angle.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_Magick_DrawableRoundRectangle_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableRoundRectangle;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  double arg6 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  Magick::DrawableRoundRectangle *result;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableRoundRectangle.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableRoundRectangle" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableRoundRectangle" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableRoundRectangle" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableRoundRectangle" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_DrawableRoundRectangle" "', argument " "5"" of type '" "double""'");
  } 
  arg5 = static_cast< double >(val5);ecode6 = SWIG_AsVal_double(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_DrawableRoundRectangle" "', argument " "6"" of type '" "double""'");
  } 
  arg6 = static_cast< double >(val6);{
    try {
      result = (Magick::DrawableRoundRectangle *)new Magick::DrawableRoundRectangle(arg1,arg2,arg3,arg4,arg5,arg6);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_Magick_DrawableRoundRectangle_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableRoundRectangle_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableRoundRectangle *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableRoundRectangle_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_call" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableRoundRectangle_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableRoundRectangle const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableRoundRectangle_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_copy" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableRoundRectangle const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_upperLeftX" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRoundRectangle_upperLeftX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->upperLeftX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_upperLeftX" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRoundRectangle const *)arg1)->upperLeftX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_upperLeftX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_upperLeftX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function upperLeftX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_upperLeftY" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRoundRectangle_upperLeftY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->upperLeftY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_upperLeftY" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRoundRectangle const *)arg1)->upperLeftY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_upperLeftY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_upperLeftY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function upperLeftY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_lowerRightX" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRoundRectangle_lowerRightX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->lowerRightX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_lowerRightX" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRoundRectangle const *)arg1)->lowerRightX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_lowerRightX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_lowerRightX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function lowerRightX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_lowerRightY" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRoundRectangle_lowerRightY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->lowerRightY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_lowerRightY" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRoundRectangle const *)arg1)->lowerRightY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_lowerRightY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_lowerRightY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function lowerRightY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_cornerWidth" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRoundRectangle_cornerWidth" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cornerWidth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_cornerWidth" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRoundRectangle const *)arg1)->cornerWidth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_cornerWidth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_cornerWidth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function cornerWidth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_cornerHeight" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableRoundRectangle_cornerHeight" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cornerHeight(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableRoundRectangle *arg1 = (Magick::DrawableRoundRectangle *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableRoundRectangle, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableRoundRectangle_cornerHeight" "', argument " "1"" of type '" "Magick::DrawableRoundRectangle const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableRoundRectangle * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableRoundRectangle const *)arg1)->cornerHeight();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableRoundRectangle_templ<SWIG_OBJ_WRAP>::_wrap_DrawableRoundRectangle__wrap_Magick_DrawableRoundRectangle_cornerHeight(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableRoundRectangle_cornerHeight__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function cornerHeight.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_Magick_DrawableScaling_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableScaling;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::DrawableScaling *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableScaling.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableScaling" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableScaling" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::DrawableScaling *)new Magick::DrawableScaling(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_Magick_DrawableScaling_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableScaling_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableScaling *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableScaling_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableScaling *arg1 = (Magick::DrawableScaling *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableScaling_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableScaling, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableScaling_call" "', argument " "1"" of type '" "Magick::DrawableScaling const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableScaling * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableScaling_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableScaling const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableScaling_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableScaling *arg1 = (Magick::DrawableScaling *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableScaling_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableScaling, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableScaling_copy" "', argument " "1"" of type '" "Magick::DrawableScaling const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableScaling * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableScaling const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableScaling_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableScaling *arg1 = (Magick::DrawableScaling *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableScaling, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableScaling_x" "', argument " "1"" of type '" "Magick::DrawableScaling *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableScaling * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableScaling_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableScaling_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableScaling *arg1 = (Magick::DrawableScaling *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableScaling, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableScaling_x" "', argument " "1"" of type '" "Magick::DrawableScaling const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableScaling * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableScaling const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_DrawableScaling__wrap_Magick_DrawableScaling_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableScaling_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableScaling_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableScaling_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableScaling_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableScaling_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableScaling *arg1 = (Magick::DrawableScaling *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableScaling, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableScaling_y" "', argument " "1"" of type '" "Magick::DrawableScaling *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableScaling * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableScaling_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableScaling_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableScaling *arg1 = (Magick::DrawableScaling *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableScaling, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableScaling_y" "', argument " "1"" of type '" "Magick::DrawableScaling const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableScaling * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableScaling const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableScaling_templ<SWIG_OBJ_WRAP>::_wrap_DrawableScaling__wrap_Magick_DrawableScaling_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableScaling_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableScaling_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableScaling_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableScaling_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::_Magick_DrawableSkewX_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableSkewX;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableSkewX *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableSkewX.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableSkewX" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableSkewX *)new Magick::DrawableSkewX(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::_Magick_DrawableSkewX_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableSkewX_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableSkewX *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewX_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewX *arg1 = (Magick::DrawableSkewX *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableSkewX_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewX, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewX_call" "', argument " "1"" of type '" "Magick::DrawableSkewX const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewX * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableSkewX_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableSkewX const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewX_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewX *arg1 = (Magick::DrawableSkewX *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableSkewX_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewX, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewX_copy" "', argument " "1"" of type '" "Magick::DrawableSkewX const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewX * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableSkewX const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewX_angle__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewX *arg1 = (Magick::DrawableSkewX *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewX, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewX_angle" "', argument " "1"" of type '" "Magick::DrawableSkewX *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewX * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableSkewX_angle" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->angle(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewX_angle__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewX *arg1 = (Magick::DrawableSkewX *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewX, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewX_angle" "', argument " "1"" of type '" "Magick::DrawableSkewX const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewX * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableSkewX const *)arg1)->angle();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewX_templ<SWIG_OBJ_WRAP>::_wrap_DrawableSkewX__wrap_Magick_DrawableSkewX_angle(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableSkewX_angle__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableSkewX_angle__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableSkewX_angle__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableSkewX_angle__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function angle.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::_Magick_DrawableSkewY_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableSkewY;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableSkewY *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableSkewY.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableSkewY" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableSkewY *)new Magick::DrawableSkewY(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::_Magick_DrawableSkewY_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableSkewY_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableSkewY *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewY_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewY *arg1 = (Magick::DrawableSkewY *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableSkewY_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewY, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewY_call" "', argument " "1"" of type '" "Magick::DrawableSkewY const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewY * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableSkewY_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableSkewY const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewY_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewY *arg1 = (Magick::DrawableSkewY *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableSkewY_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewY, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewY_copy" "', argument " "1"" of type '" "Magick::DrawableSkewY const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewY * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableSkewY const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewY_angle__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewY *arg1 = (Magick::DrawableSkewY *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewY, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewY_angle" "', argument " "1"" of type '" "Magick::DrawableSkewY *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewY * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableSkewY_angle" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->angle(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableSkewY_angle__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableSkewY *arg1 = (Magick::DrawableSkewY *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableSkewY, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableSkewY_angle" "', argument " "1"" of type '" "Magick::DrawableSkewY const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableSkewY * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableSkewY const *)arg1)->angle();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableSkewY_templ<SWIG_OBJ_WRAP>::_wrap_DrawableSkewY__wrap_Magick_DrawableSkewY_angle(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableSkewY_angle__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableSkewY_angle__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableSkewY_angle__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableSkewY_angle__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function angle.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableStrokeDashArray__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double *arg1 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableStrokeDashArray *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeDashArray__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1,SWIGTYPE_p_double, 0 |  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableStrokeDashArray" "', argument " "1"" of type '" "double const *""'"); 
  }
  arg1 = reinterpret_cast< double * >(argp1);{
    try {
      result = (Magick::DrawableStrokeDashArray *)new Magick::DrawableStrokeDashArray((double const *)arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableStrokeDashArray__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableStrokeDashArray *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableStrokeDashArray *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeDashArray__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableStrokeDashArray,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableStrokeDashArray" "', argument " "1"" of type '" "Magick::DrawableStrokeDashArray const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableStrokeDashArray" "', argument " "1"" of type '" "Magick::DrawableStrokeDashArray const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableStrokeDashArray * >(argp1);{
    try {
      result = (Magick::DrawableStrokeDashArray *)new Magick::DrawableStrokeDashArray((Magick::DrawableStrokeDashArray const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeDashArray_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableStrokeDashArray;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableStrokeDashArray__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableStrokeDashArray__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableStrokeDashArray__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableStrokeDashArray__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableStrokeDashArray");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeDashArray_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeDashArray_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeDashArray *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashArray_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashArray *arg1 = (Magick::DrawableStrokeDashArray *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeDashArray_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashArray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashArray_call" "', argument " "1"" of type '" "Magick::DrawableStrokeDashArray const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashArray * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeDashArray_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeDashArray const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashArray_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashArray *arg1 = (Magick::DrawableStrokeDashArray *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeDashArray_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashArray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashArray_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeDashArray const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashArray * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeDashArray const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashArray *arg1 = (Magick::DrawableStrokeDashArray *) 0 ;
  double *arg2 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashArray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashArray_dasharray" "', argument " "1"" of type '" "Magick::DrawableStrokeDashArray *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashArray * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeDashArray_dasharray" "', argument " "2"" of type '" "double const *""'"); 
    }
    arg2 = reinterpret_cast< double * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->dasharray((double const *)arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashArray *arg1 = (Magick::DrawableStrokeDashArray *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashArray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashArray_dasharray" "', argument " "1"" of type '" "Magick::DrawableStrokeDashArray const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashArray * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double *)((Magick::DrawableStrokeDashArray const *)arg1)->dasharray();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeDashArray__wrap_Magick_DrawableStrokeDashArray_dasharray(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeDashArray_dasharray__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function dasharray.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashArray_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashArray_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashArray *arg1 = (Magick::DrawableStrokeDashArray *) 0 ;
  Magick::DrawableStrokeDashArray *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableStrokeDashArray *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeDashArray_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashArray, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashArray_clone" "', argument " "1"" of type '" "Magick::DrawableStrokeDashArray *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashArray * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__DrawableStrokeDashArray,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeDashArray_clone" "', argument " "2"" of type '" "Magick::DrawableStrokeDashArray const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableStrokeDashArray_clone" "', argument " "2"" of type '" "Magick::DrawableStrokeDashArray const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::DrawableStrokeDashArray * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableStrokeDashArray *) &(arg1)->operator =((Magick::DrawableStrokeDashArray const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableStrokeDashArray, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeDashOffset_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableStrokeDashOffset;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableStrokeDashOffset *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeDashOffset.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableStrokeDashOffset" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableStrokeDashOffset *)new Magick::DrawableStrokeDashOffset(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeDashOffset_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeDashOffset_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeDashOffset *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashOffset_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashOffset *arg1 = (Magick::DrawableStrokeDashOffset *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeDashOffset_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashOffset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashOffset_call" "', argument " "1"" of type '" "Magick::DrawableStrokeDashOffset const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashOffset * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeDashOffset_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeDashOffset const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashOffset_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashOffset *arg1 = (Magick::DrawableStrokeDashOffset *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeDashOffset_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashOffset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashOffset_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeDashOffset const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashOffset * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeDashOffset const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashOffset *arg1 = (Magick::DrawableStrokeDashOffset *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashOffset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashOffset_offset" "', argument " "1"" of type '" "Magick::DrawableStrokeDashOffset *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashOffset * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableStrokeDashOffset_offset" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->offset(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeDashOffset *arg1 = (Magick::DrawableStrokeDashOffset *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeDashOffset, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeDashOffset_offset" "', argument " "1"" of type '" "Magick::DrawableStrokeDashOffset const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeDashOffset * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableStrokeDashOffset const *)arg1)->offset();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeDashOffset_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeDashOffset__wrap_Magick_DrawableStrokeDashOffset_offset(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeDashOffset_offset__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function offset.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeLineCap_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableStrokeLineCap;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::LineCap arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableStrokeLineCap *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeLineCap.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableStrokeLineCap" "', argument " "1"" of type '" "Magick::LineCap""'");
  } 
  arg1 = static_cast< Magick::LineCap >(val1);{
    try {
      result = (Magick::DrawableStrokeLineCap *)new Magick::DrawableStrokeLineCap(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeLineCap_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeLineCap_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeLineCap *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineCap_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineCap *arg1 = (Magick::DrawableStrokeLineCap *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeLineCap_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineCap, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineCap_call" "', argument " "1"" of type '" "Magick::DrawableStrokeLineCap const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineCap * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeLineCap_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeLineCap const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineCap_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineCap *arg1 = (Magick::DrawableStrokeLineCap *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeLineCap_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineCap, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineCap_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeLineCap const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineCap * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeLineCap const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineCap *arg1 = (Magick::DrawableStrokeLineCap *) 0 ;
  Magick::LineCap arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineCap, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineCap_linecap" "', argument " "1"" of type '" "Magick::DrawableStrokeLineCap *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineCap * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableStrokeLineCap_linecap" "', argument " "2"" of type '" "Magick::LineCap""'");
    } 
    arg2 = static_cast< Magick::LineCap >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->linecap(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineCap *arg1 = (Magick::DrawableStrokeLineCap *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::LineCap result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineCap, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineCap_linecap" "', argument " "1"" of type '" "Magick::DrawableStrokeLineCap const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineCap * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::LineCap)((Magick::DrawableStrokeLineCap const *)arg1)->linecap();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineCap_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeLineCap__wrap_Magick_DrawableStrokeLineCap_linecap(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeLineCap_linecap__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function linecap.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeLineJoin_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableStrokeLineJoin;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::LineJoin arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableStrokeLineJoin *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeLineJoin.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableStrokeLineJoin" "', argument " "1"" of type '" "Magick::LineJoin""'");
  } 
  arg1 = static_cast< Magick::LineJoin >(val1);{
    try {
      result = (Magick::DrawableStrokeLineJoin *)new Magick::DrawableStrokeLineJoin(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeLineJoin_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeLineJoin_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeLineJoin *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineJoin_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineJoin *arg1 = (Magick::DrawableStrokeLineJoin *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeLineJoin_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineJoin, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineJoin_call" "', argument " "1"" of type '" "Magick::DrawableStrokeLineJoin const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineJoin * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeLineJoin_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeLineJoin const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineJoin_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineJoin *arg1 = (Magick::DrawableStrokeLineJoin *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeLineJoin_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineJoin, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineJoin_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeLineJoin const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineJoin * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeLineJoin const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineJoin *arg1 = (Magick::DrawableStrokeLineJoin *) 0 ;
  Magick::LineJoin arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineJoin, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineJoin_linejoin" "', argument " "1"" of type '" "Magick::DrawableStrokeLineJoin *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineJoin * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableStrokeLineJoin_linejoin" "', argument " "2"" of type '" "Magick::LineJoin""'");
    } 
    arg2 = static_cast< Magick::LineJoin >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->linejoin(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeLineJoin *arg1 = (Magick::DrawableStrokeLineJoin *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::LineJoin result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeLineJoin, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeLineJoin_linejoin" "', argument " "1"" of type '" "Magick::DrawableStrokeLineJoin const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeLineJoin * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::LineJoin)((Magick::DrawableStrokeLineJoin const *)arg1)->linejoin();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeLineJoin_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeLineJoin__wrap_Magick_DrawableStrokeLineJoin_linejoin(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeLineJoin_linejoin__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function linejoin.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::_Magick_DrawableMiterLimit_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableMiterLimit;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableMiterLimit *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableMiterLimit.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableMiterLimit" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::DrawableMiterLimit *)new Magick::DrawableMiterLimit(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::_Magick_DrawableMiterLimit_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableMiterLimit_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableMiterLimit *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableMiterLimit_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableMiterLimit *arg1 = (Magick::DrawableMiterLimit *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableMiterLimit_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableMiterLimit, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableMiterLimit_call" "', argument " "1"" of type '" "Magick::DrawableMiterLimit const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableMiterLimit * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableMiterLimit_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableMiterLimit const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableMiterLimit_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableMiterLimit *arg1 = (Magick::DrawableMiterLimit *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableMiterLimit_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableMiterLimit, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableMiterLimit_copy" "', argument " "1"" of type '" "Magick::DrawableMiterLimit const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableMiterLimit * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableMiterLimit const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableMiterLimit *arg1 = (Magick::DrawableMiterLimit *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableMiterLimit, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableMiterLimit_miterlimit" "', argument " "1"" of type '" "Magick::DrawableMiterLimit *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableMiterLimit * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableMiterLimit_miterlimit" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->miterlimit(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableMiterLimit *arg1 = (Magick::DrawableMiterLimit *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableMiterLimit, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableMiterLimit_miterlimit" "', argument " "1"" of type '" "Magick::DrawableMiterLimit const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableMiterLimit * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableMiterLimit const *)arg1)->miterlimit();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableMiterLimit_templ<SWIG_OBJ_WRAP>::_wrap_DrawableMiterLimit__wrap_Magick_DrawableMiterLimit_miterlimit(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableMiterLimit_miterlimit__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function miterlimit.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableStrokePatternUrl__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::DrawableStrokePatternUrl *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableStrokePatternUrl" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableStrokePatternUrl" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableStrokePatternUrl *)new Magick::DrawableStrokePatternUrl((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokePatternUrl_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokePatternUrl *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableStrokePatternUrl__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableStrokePatternUrl *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableStrokePatternUrl *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableStrokePatternUrl,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableStrokePatternUrl" "', argument " "1"" of type '" "Magick::DrawableStrokePatternUrl const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableStrokePatternUrl" "', argument " "1"" of type '" "Magick::DrawableStrokePatternUrl const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableStrokePatternUrl * >(argp1);{
    try {
      result = (Magick::DrawableStrokePatternUrl *)new Magick::DrawableStrokePatternUrl((Magick::DrawableStrokePatternUrl const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokePatternUrl_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableStrokePatternUrl;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableStrokePatternUrl__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableStrokePatternUrl");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokePatternUrl_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokePatternUrl_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokePatternUrl *arg1 = (Magick::DrawableStrokePatternUrl *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokePatternUrl_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokePatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokePatternUrl_call" "', argument " "1"" of type '" "Magick::DrawableStrokePatternUrl const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokePatternUrl * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokePatternUrl_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokePatternUrl const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokePatternUrl_url__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokePatternUrl *arg1 = (Magick::DrawableStrokePatternUrl *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokePatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokePatternUrl_url" "', argument " "1"" of type '" "Magick::DrawableStrokePatternUrl *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokePatternUrl * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokePatternUrl_url" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableStrokePatternUrl_url" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->url((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokePatternUrl_url__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokePatternUrl *arg1 = (Magick::DrawableStrokePatternUrl *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokePatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokePatternUrl_url" "', argument " "1"" of type '" "Magick::DrawableStrokePatternUrl const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokePatternUrl * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableStrokePatternUrl const *)arg1)->url();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokePatternUrl__wrap_Magick_DrawableStrokePatternUrl_url(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokePatternUrl_url__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokePatternUrl_url__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokePatternUrl_url__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokePatternUrl_url__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function url.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokePatternUrl_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokePatternUrl_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokePatternUrl *arg1 = (Magick::DrawableStrokePatternUrl *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokePatternUrl_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokePatternUrl, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokePatternUrl_copy" "', argument " "1"" of type '" "Magick::DrawableStrokePatternUrl const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokePatternUrl * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokePatternUrl const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeAntialias_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableStrokeAntialias;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::DrawableStrokeAntialias *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeAntialias.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableStrokeAntialias" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::DrawableStrokeAntialias *)new Magick::DrawableStrokeAntialias(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeAntialias_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeAntialias_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeAntialias *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeAntialias_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeAntialias *arg1 = (Magick::DrawableStrokeAntialias *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeAntialias_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeAntialias_call" "', argument " "1"" of type '" "Magick::DrawableStrokeAntialias const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeAntialias * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeAntialias_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeAntialias const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeAntialias_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeAntialias *arg1 = (Magick::DrawableStrokeAntialias *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeAntialias_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeAntialias_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeAntialias const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeAntialias * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeAntialias const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeAntialias_flag__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeAntialias *arg1 = (Magick::DrawableStrokeAntialias *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeAntialias_flag" "', argument " "1"" of type '" "Magick::DrawableStrokeAntialias *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeAntialias * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableStrokeAntialias_flag" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->flag(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeAntialias_flag__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeAntialias *arg1 = (Magick::DrawableStrokeAntialias *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeAntialias_flag" "', argument " "1"" of type '" "Magick::DrawableStrokeAntialias const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeAntialias * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::DrawableStrokeAntialias const *)arg1)->flag();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeAntialias_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeAntialias__wrap_Magick_DrawableStrokeAntialias_flag(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeAntialias_flag__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeAntialias_flag__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeAntialias_flag__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeAntialias_flag__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function flag.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableStrokeColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::DrawableStrokeColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeColor__SWIG_0.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableStrokeColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableStrokeColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_DrawableStrokeColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableStrokeColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::DrawableStrokeColor *)new Magick::DrawableStrokeColor((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableStrokeColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableStrokeColor *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableStrokeColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeColor__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableStrokeColor,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableStrokeColor" "', argument " "1"" of type '" "Magick::DrawableStrokeColor const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableStrokeColor" "', argument " "1"" of type '" "Magick::DrawableStrokeColor const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableStrokeColor * >(argp1);{
    try {
      result = (Magick::DrawableStrokeColor *)new Magick::DrawableStrokeColor((Magick::DrawableStrokeColor const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeColor_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableStrokeColor;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableStrokeColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableStrokeColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableStrokeColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableStrokeColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableStrokeColor");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeColor_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeColor_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeColor *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeColor_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeColor *arg1 = (Magick::DrawableStrokeColor *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeColor_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeColor_call" "', argument " "1"" of type '" "Magick::DrawableStrokeColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeColor * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeColor_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeColor const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeColor_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeColor *arg1 = (Magick::DrawableStrokeColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeColor_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeColor_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeColor const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeColor_color__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeColor *arg1 = (Magick::DrawableStrokeColor *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeColor_color" "', argument " "1"" of type '" "Magick::DrawableStrokeColor *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeColor * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_DrawableStrokeColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableStrokeColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_DrawableStrokeColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableStrokeColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->color((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeColor_color__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeColor *arg1 = (Magick::DrawableStrokeColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeColor_color" "', argument " "1"" of type '" "Magick::DrawableStrokeColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableStrokeColor const *)arg1)->color();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeColor_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeColor__wrap_Magick_DrawableStrokeColor_color(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeColor_color__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeColor_color__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeColor_color__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeColor_color__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function color.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeOpacity_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableStrokeOpacity;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableStrokeOpacity *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeOpacity.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableStrokeOpacity" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableStrokeOpacity *)new Magick::DrawableStrokeOpacity(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeOpacity_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeOpacity_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeOpacity *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeOpacity_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeOpacity *arg1 = (Magick::DrawableStrokeOpacity *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeOpacity_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeOpacity_call" "', argument " "1"" of type '" "Magick::DrawableStrokeOpacity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeOpacity * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeOpacity_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeOpacity const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeOpacity_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeOpacity *arg1 = (Magick::DrawableStrokeOpacity *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeOpacity_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeOpacity_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeOpacity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeOpacity * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeOpacity const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeOpacity *arg1 = (Magick::DrawableStrokeOpacity *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeOpacity_opacity" "', argument " "1"" of type '" "Magick::DrawableStrokeOpacity *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeOpacity * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableStrokeOpacity_opacity" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->opacity(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeOpacity *arg1 = (Magick::DrawableStrokeOpacity *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeOpacity, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeOpacity_opacity" "', argument " "1"" of type '" "Magick::DrawableStrokeOpacity const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeOpacity * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableStrokeOpacity const *)arg1)->opacity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeOpacity_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeOpacity__wrap_Magick_DrawableStrokeOpacity_opacity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeOpacity_opacity__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function opacity.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeWidth_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableStrokeWidth;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableStrokeWidth *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableStrokeWidth.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableStrokeWidth" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableStrokeWidth *)new Magick::DrawableStrokeWidth(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::_Magick_DrawableStrokeWidth_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableStrokeWidth_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableStrokeWidth *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeWidth_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeWidth *arg1 = (Magick::DrawableStrokeWidth *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeWidth_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeWidth, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeWidth_call" "', argument " "1"" of type '" "Magick::DrawableStrokeWidth const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeWidth * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableStrokeWidth_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableStrokeWidth const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeWidth_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeWidth *arg1 = (Magick::DrawableStrokeWidth *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableStrokeWidth_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeWidth, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeWidth_copy" "', argument " "1"" of type '" "Magick::DrawableStrokeWidth const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeWidth * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableStrokeWidth const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeWidth_width__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeWidth *arg1 = (Magick::DrawableStrokeWidth *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeWidth, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeWidth_width" "', argument " "1"" of type '" "Magick::DrawableStrokeWidth *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeWidth * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableStrokeWidth_width" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->width(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableStrokeWidth_width__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableStrokeWidth *arg1 = (Magick::DrawableStrokeWidth *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableStrokeWidth, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableStrokeWidth_width" "', argument " "1"" of type '" "Magick::DrawableStrokeWidth const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableStrokeWidth * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableStrokeWidth const *)arg1)->width();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableStrokeWidth_templ<SWIG_OBJ_WRAP>::_wrap_DrawableStrokeWidth__wrap_Magick_DrawableStrokeWidth_width(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeWidth_width__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeWidth_width__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableStrokeWidth_width__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableStrokeWidth_width__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function width.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableText__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  std::string *arg3 = 0 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  Magick::DrawableText *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableText__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableText" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableText" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    {
      std::string *ptr = (std::string *)0;
      res3 = SWIG_AsPtr_std_string(info[2], &ptr);
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_DrawableText" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableText" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      arg3 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableText *)new Magick::DrawableText(arg1,arg2,(std::string const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res3)) delete arg3;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableText__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  std::string *arg3 = 0 ;
  std::string *arg4 = 0 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  int res4 = SWIG_OLDOBJ ;
  Magick::DrawableText *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableText__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableText" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableText" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    {
      std::string *ptr = (std::string *)0;
      res3 = SWIG_AsPtr_std_string(info[2], &ptr);
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_DrawableText" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableText" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      arg3 = ptr;
    }
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res4 = SWIG_AsPtr_std_string(info[3], &ptr);
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_DrawableText" "', argument " "4"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableText" "', argument " "4"" of type '" "std::string const &""'"); 
      }
      arg4 = ptr;
    }
  }
  {
    try {
      result = (Magick::DrawableText *)new Magick::DrawableText(arg1,arg2,(std::string const &)*arg3,(std::string const &)*arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res3)) delete arg3;
  if (SWIG_IsNewObj(res4)) delete arg4;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableText__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableText *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableText *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableText__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableText,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableText" "', argument " "1"" of type '" "Magick::DrawableText const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableText" "', argument " "1"" of type '" "Magick::DrawableText const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);{
    try {
      result = (Magick::DrawableText *)new Magick::DrawableText((Magick::DrawableText const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_Magick_DrawableText_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableText;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableText__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableText__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableText__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableText__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableText__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableText__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableText");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_Magick_DrawableText_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableText_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableText_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableText *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableText_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_call" "', argument " "1"" of type '" "Magick::DrawableText const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableText_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableText const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableText_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_copy" "', argument " "1"" of type '" "Magick::DrawableText const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableText const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_encoding(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableText_encoding.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_encoding" "', argument " "1"" of type '" "Magick::DrawableText *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableText_encoding" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableText_encoding" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->encoding((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_x" "', argument " "1"" of type '" "Magick::DrawableText *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableText_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_x" "', argument " "1"" of type '" "Magick::DrawableText const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableText const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_DrawableText__wrap_Magick_DrawableText_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableText_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableText_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableText_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableText_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_y" "', argument " "1"" of type '" "Magick::DrawableText *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableText_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_y" "', argument " "1"" of type '" "Magick::DrawableText const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableText const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_DrawableText__wrap_Magick_DrawableText_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableText_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableText_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableText_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableText_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_text__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_text" "', argument " "1"" of type '" "Magick::DrawableText *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableText_text" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableText_text" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->text((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableText_text__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableText *arg1 = (Magick::DrawableText *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableText, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableText_text" "', argument " "1"" of type '" "Magick::DrawableText const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableText * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableText const *)arg1)->text();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableText_templ<SWIG_OBJ_WRAP>::_wrap_DrawableText__wrap_Magick_DrawableText_text(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableText_text__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableText_text__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableText_text__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableText_text__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function text.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextAlignment__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::AlignType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableTextAlignment *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextAlignment__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTextAlignment" "', argument " "1"" of type '" "Magick::AlignType""'");
  } 
  arg1 = static_cast< Magick::AlignType >(val1);{
    try {
      result = (Magick::DrawableTextAlignment *)new Magick::DrawableTextAlignment(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextAlignment__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableTextAlignment *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableTextAlignment *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextAlignment__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableTextAlignment,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableTextAlignment" "', argument " "1"" of type '" "Magick::DrawableTextAlignment const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableTextAlignment" "', argument " "1"" of type '" "Magick::DrawableTextAlignment const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableTextAlignment * >(argp1);{
    try {
      result = (Magick::DrawableTextAlignment *)new Magick::DrawableTextAlignment((Magick::DrawableTextAlignment const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextAlignment_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableTextAlignment;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextAlignment__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextAlignment__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextAlignment__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextAlignment__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableTextAlignment");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextAlignment_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextAlignment_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextAlignment *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAlignment_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAlignment *arg1 = (Magick::DrawableTextAlignment *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextAlignment_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAlignment, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAlignment_call" "', argument " "1"" of type '" "Magick::DrawableTextAlignment const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAlignment * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextAlignment_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextAlignment const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAlignment_alignment__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAlignment *arg1 = (Magick::DrawableTextAlignment *) 0 ;
  Magick::AlignType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAlignment, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAlignment_alignment" "', argument " "1"" of type '" "Magick::DrawableTextAlignment *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAlignment * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTextAlignment_alignment" "', argument " "2"" of type '" "Magick::AlignType""'");
    } 
    arg2 = static_cast< Magick::AlignType >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->alignment(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAlignment_alignment__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAlignment *arg1 = (Magick::DrawableTextAlignment *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::AlignType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAlignment, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAlignment_alignment" "', argument " "1"" of type '" "Magick::DrawableTextAlignment const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAlignment * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::AlignType)((Magick::DrawableTextAlignment const *)arg1)->alignment();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextAlignment__wrap_Magick_DrawableTextAlignment_alignment(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextAlignment_alignment__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextAlignment_alignment__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextAlignment_alignment__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextAlignment_alignment__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function alignment.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAlignment_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAlignment_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAlignment *arg1 = (Magick::DrawableTextAlignment *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextAlignment_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAlignment, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAlignment_copy" "', argument " "1"" of type '" "Magick::DrawableTextAlignment const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAlignment * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextAlignment const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextAntialias__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::DrawableTextAntialias *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextAntialias__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTextAntialias" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::DrawableTextAntialias *)new Magick::DrawableTextAntialias(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextAntialias__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableTextAntialias *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableTextAntialias *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextAntialias__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableTextAntialias,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableTextAntialias" "', argument " "1"" of type '" "Magick::DrawableTextAntialias const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableTextAntialias" "', argument " "1"" of type '" "Magick::DrawableTextAntialias const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableTextAntialias * >(argp1);{
    try {
      result = (Magick::DrawableTextAntialias *)new Magick::DrawableTextAntialias((Magick::DrawableTextAntialias const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextAntialias_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableTextAntialias;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextAntialias__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextAntialias__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextAntialias__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextAntialias__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableTextAntialias");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextAntialias_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextAntialias_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextAntialias *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAntialias_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAntialias *arg1 = (Magick::DrawableTextAntialias *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextAntialias_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAntialias_call" "', argument " "1"" of type '" "Magick::DrawableTextAntialias const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAntialias * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextAntialias_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextAntialias const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAntialias_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAntialias *arg1 = (Magick::DrawableTextAntialias *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextAntialias_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAntialias_copy" "', argument " "1"" of type '" "Magick::DrawableTextAntialias const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAntialias * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextAntialias const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAntialias_flag__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAntialias *arg1 = (Magick::DrawableTextAntialias *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAntialias_flag" "', argument " "1"" of type '" "Magick::DrawableTextAntialias *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAntialias * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTextAntialias_flag" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->flag(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextAntialias_flag__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextAntialias *arg1 = (Magick::DrawableTextAntialias *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextAntialias, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextAntialias_flag" "', argument " "1"" of type '" "Magick::DrawableTextAntialias const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextAntialias * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::DrawableTextAntialias const *)arg1)->flag();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextAntialias_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextAntialias__wrap_Magick_DrawableTextAntialias_flag(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextAntialias_flag__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextAntialias_flag__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextAntialias_flag__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextAntialias_flag__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function flag.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextDecoration__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DecorationType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableTextDecoration *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextDecoration__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTextDecoration" "', argument " "1"" of type '" "Magick::DecorationType""'");
  } 
  arg1 = static_cast< Magick::DecorationType >(val1);{
    try {
      result = (Magick::DrawableTextDecoration *)new Magick::DrawableTextDecoration(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextDecoration__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableTextDecoration *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableTextDecoration *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextDecoration__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableTextDecoration,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableTextDecoration" "', argument " "1"" of type '" "Magick::DrawableTextDecoration const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableTextDecoration" "', argument " "1"" of type '" "Magick::DrawableTextDecoration const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableTextDecoration * >(argp1);{
    try {
      result = (Magick::DrawableTextDecoration *)new Magick::DrawableTextDecoration((Magick::DrawableTextDecoration const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextDecoration_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableTextDecoration;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextDecoration__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextDecoration__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextDecoration__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextDecoration__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableTextDecoration");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextDecoration_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextDecoration_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextDecoration *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDecoration_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDecoration *arg1 = (Magick::DrawableTextDecoration *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextDecoration_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDecoration, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDecoration_call" "', argument " "1"" of type '" "Magick::DrawableTextDecoration const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDecoration * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextDecoration_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextDecoration const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDecoration_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDecoration *arg1 = (Magick::DrawableTextDecoration *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextDecoration_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDecoration, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDecoration_copy" "', argument " "1"" of type '" "Magick::DrawableTextDecoration const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDecoration * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextDecoration const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDecoration_decoration__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDecoration *arg1 = (Magick::DrawableTextDecoration *) 0 ;
  Magick::DecorationType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDecoration, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDecoration_decoration" "', argument " "1"" of type '" "Magick::DrawableTextDecoration *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDecoration * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTextDecoration_decoration" "', argument " "2"" of type '" "Magick::DecorationType""'");
    } 
    arg2 = static_cast< Magick::DecorationType >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->decoration(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDecoration_decoration__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDecoration *arg1 = (Magick::DrawableTextDecoration *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DecorationType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDecoration, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDecoration_decoration" "', argument " "1"" of type '" "Magick::DrawableTextDecoration const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDecoration * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DecorationType)((Magick::DrawableTextDecoration const *)arg1)->decoration();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDecoration_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextDecoration__wrap_Magick_DrawableTextDecoration_decoration(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextDecoration_decoration__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextDecoration_decoration__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextDecoration_decoration__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextDecoration_decoration__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function decoration.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextDirection_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableTextDirection;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DirectionType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::DrawableTextDirection *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextDirection.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTextDirection" "', argument " "1"" of type '" "Magick::DirectionType""'");
  } 
  arg1 = static_cast< Magick::DirectionType >(val1);{
    try {
      result = (Magick::DrawableTextDirection *)new Magick::DrawableTextDirection(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextDirection_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextDirection_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextDirection *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDirection_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDirection *arg1 = (Magick::DrawableTextDirection *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextDirection_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDirection, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDirection_call" "', argument " "1"" of type '" "Magick::DrawableTextDirection const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDirection * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextDirection_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextDirection const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDirection_direction__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDirection *arg1 = (Magick::DrawableTextDirection *) 0 ;
  Magick::DirectionType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDirection, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDirection_direction" "', argument " "1"" of type '" "Magick::DrawableTextDirection *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDirection * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTextDirection_direction" "', argument " "2"" of type '" "Magick::DirectionType""'");
    } 
    arg2 = static_cast< Magick::DirectionType >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->direction(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDirection_direction__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDirection *arg1 = (Magick::DrawableTextDirection *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DirectionType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDirection, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDirection_direction" "', argument " "1"" of type '" "Magick::DrawableTextDirection const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDirection * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DirectionType)((Magick::DrawableTextDirection const *)arg1)->direction();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextDirection__wrap_Magick_DrawableTextDirection_direction(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextDirection_direction__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextDirection_direction__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextDirection_direction__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextDirection_direction__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function direction.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextDirection_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextDirection_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextDirection *arg1 = (Magick::DrawableTextDirection *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextDirection_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextDirection, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextDirection_copy" "', argument " "1"" of type '" "Magick::DrawableTextDirection const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextDirection * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextDirection const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextInterlineSpacing_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableTextInterlineSpacing;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableTextInterlineSpacing *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextInterlineSpacing.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTextInterlineSpacing" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableTextInterlineSpacing *)new Magick::DrawableTextInterlineSpacing(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextInterlineSpacing_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextInterlineSpacing_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextInterlineSpacing *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterlineSpacing_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterlineSpacing *arg1 = (Magick::DrawableTextInterlineSpacing *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextInterlineSpacing_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterlineSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterlineSpacing_call" "', argument " "1"" of type '" "Magick::DrawableTextInterlineSpacing const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterlineSpacing * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextInterlineSpacing_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextInterlineSpacing const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterlineSpacing *arg1 = (Magick::DrawableTextInterlineSpacing *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterlineSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterlineSpacing_spacing" "', argument " "1"" of type '" "Magick::DrawableTextInterlineSpacing *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterlineSpacing * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTextInterlineSpacing_spacing" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->spacing(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterlineSpacing *arg1 = (Magick::DrawableTextInterlineSpacing *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterlineSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterlineSpacing_spacing" "', argument " "1"" of type '" "Magick::DrawableTextInterlineSpacing const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterlineSpacing * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableTextInterlineSpacing const *)arg1)->spacing();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextInterlineSpacing__wrap_Magick_DrawableTextInterlineSpacing_spacing(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextInterlineSpacing_spacing__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function spacing.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterlineSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterlineSpacing_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterlineSpacing *arg1 = (Magick::DrawableTextInterlineSpacing *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextInterlineSpacing_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterlineSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterlineSpacing_copy" "', argument " "1"" of type '" "Magick::DrawableTextInterlineSpacing const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterlineSpacing * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextInterlineSpacing const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextInterwordSpacing_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableTextInterwordSpacing;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableTextInterwordSpacing *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextInterwordSpacing.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTextInterwordSpacing" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableTextInterwordSpacing *)new Magick::DrawableTextInterwordSpacing(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextInterwordSpacing_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextInterwordSpacing_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextInterwordSpacing *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterwordSpacing_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterwordSpacing *arg1 = (Magick::DrawableTextInterwordSpacing *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextInterwordSpacing_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterwordSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterwordSpacing_call" "', argument " "1"" of type '" "Magick::DrawableTextInterwordSpacing const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterwordSpacing * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextInterwordSpacing_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextInterwordSpacing const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterwordSpacing *arg1 = (Magick::DrawableTextInterwordSpacing *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterwordSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterwordSpacing_spacing" "', argument " "1"" of type '" "Magick::DrawableTextInterwordSpacing *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterwordSpacing * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTextInterwordSpacing_spacing" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->spacing(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterwordSpacing *arg1 = (Magick::DrawableTextInterwordSpacing *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterwordSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterwordSpacing_spacing" "', argument " "1"" of type '" "Magick::DrawableTextInterwordSpacing const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterwordSpacing * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableTextInterwordSpacing const *)arg1)->spacing();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextInterwordSpacing__wrap_Magick_DrawableTextInterwordSpacing_spacing(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextInterwordSpacing_spacing__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function spacing.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextInterwordSpacing_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextInterwordSpacing_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextInterwordSpacing *arg1 = (Magick::DrawableTextInterwordSpacing *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextInterwordSpacing_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextInterwordSpacing, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextInterwordSpacing_copy" "', argument " "1"" of type '" "Magick::DrawableTextInterwordSpacing const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextInterwordSpacing * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextInterwordSpacing const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextKerning_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableTextKerning;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::DrawableTextKerning *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextKerning.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTextKerning" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::DrawableTextKerning *)new Magick::DrawableTextKerning(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextKerning_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextKerning_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextKerning *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextKerning_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextKerning *arg1 = (Magick::DrawableTextKerning *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextKerning_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextKerning, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextKerning_call" "', argument " "1"" of type '" "Magick::DrawableTextKerning const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextKerning * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextKerning_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextKerning const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextKerning_kerning__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextKerning *arg1 = (Magick::DrawableTextKerning *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextKerning, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextKerning_kerning" "', argument " "1"" of type '" "Magick::DrawableTextKerning *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextKerning * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTextKerning_kerning" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->kerning(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextKerning_kerning__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextKerning *arg1 = (Magick::DrawableTextKerning *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextKerning, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextKerning_kerning" "', argument " "1"" of type '" "Magick::DrawableTextKerning const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextKerning * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableTextKerning const *)arg1)->kerning();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextKerning__wrap_Magick_DrawableTextKerning_kerning(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextKerning_kerning__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextKerning_kerning__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextKerning_kerning__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextKerning_kerning__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function kerning.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextKerning_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextKerning_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextKerning *arg1 = (Magick::DrawableTextKerning *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextKerning_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextKerning, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextKerning_copy" "', argument " "1"" of type '" "Magick::DrawableTextKerning const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextKerning * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextKerning const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextUnderColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::DrawableTextUnderColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextUnderColor__SWIG_0.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableTextUnderColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableTextUnderColor" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_DrawableTextUnderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableTextUnderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::DrawableTextUnderColor *)new Magick::DrawableTextUnderColor((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_DrawableTextUnderColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableTextUnderColor *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::DrawableTextUnderColor *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTextUnderColor__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableTextUnderColor,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_DrawableTextUnderColor" "', argument " "1"" of type '" "Magick::DrawableTextUnderColor const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_DrawableTextUnderColor" "', argument " "1"" of type '" "Magick::DrawableTextUnderColor const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableTextUnderColor * >(argp1);{
    try {
      result = (Magick::DrawableTextUnderColor *)new Magick::DrawableTextUnderColor((Magick::DrawableTextUnderColor const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextUnderColor_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__DrawableTextUnderColor;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextUnderColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextUnderColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_DrawableTextUnderColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_DrawableTextUnderColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_DrawableTextUnderColor");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTextUnderColor_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTextUnderColor_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTextUnderColor *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextUnderColor_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextUnderColor *arg1 = (Magick::DrawableTextUnderColor *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextUnderColor_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextUnderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextUnderColor_call" "', argument " "1"" of type '" "Magick::DrawableTextUnderColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextUnderColor * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTextUnderColor_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTextUnderColor const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextUnderColor_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextUnderColor *arg1 = (Magick::DrawableTextUnderColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTextUnderColor_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextUnderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextUnderColor_copy" "', argument " "1"" of type '" "Magick::DrawableTextUnderColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextUnderColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTextUnderColor const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextUnderColor_color__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextUnderColor *arg1 = (Magick::DrawableTextUnderColor *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextUnderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextUnderColor_color" "', argument " "1"" of type '" "Magick::DrawableTextUnderColor *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextUnderColor * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_DrawableTextUnderColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableTextUnderColor_color" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_DrawableTextUnderColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_DrawableTextUnderColor_color" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->color((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTextUnderColor_color__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTextUnderColor *arg1 = (Magick::DrawableTextUnderColor *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTextUnderColor, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTextUnderColor_color" "', argument " "1"" of type '" "Magick::DrawableTextUnderColor const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTextUnderColor * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableTextUnderColor const *)arg1)->color();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTextUnderColor_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTextUnderColor__wrap_Magick_DrawableTextUnderColor_color(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextUnderColor_color__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextUnderColor_color__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTextUnderColor_color__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTextUnderColor_color__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function color.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTranslation_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableTranslation;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::DrawableTranslation *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableTranslation.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableTranslation" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableTranslation" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::DrawableTranslation *)new Magick::DrawableTranslation(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_Magick_DrawableTranslation_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableTranslation_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableTranslation *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTranslation_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTranslation *arg1 = (Magick::DrawableTranslation *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTranslation_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTranslation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTranslation_call" "', argument " "1"" of type '" "Magick::DrawableTranslation const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTranslation * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableTranslation_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableTranslation const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTranslation_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTranslation *arg1 = (Magick::DrawableTranslation *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableTranslation_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTranslation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTranslation_copy" "', argument " "1"" of type '" "Magick::DrawableTranslation const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTranslation * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableTranslation const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTranslation_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTranslation *arg1 = (Magick::DrawableTranslation *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTranslation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTranslation_x" "', argument " "1"" of type '" "Magick::DrawableTranslation *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTranslation * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTranslation_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTranslation_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTranslation *arg1 = (Magick::DrawableTranslation *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTranslation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTranslation_x" "', argument " "1"" of type '" "Magick::DrawableTranslation const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTranslation * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableTranslation const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTranslation__wrap_Magick_DrawableTranslation_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTranslation_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTranslation_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTranslation_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTranslation_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTranslation_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTranslation *arg1 = (Magick::DrawableTranslation *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTranslation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTranslation_y" "', argument " "1"" of type '" "Magick::DrawableTranslation *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTranslation * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableTranslation_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableTranslation_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableTranslation *arg1 = (Magick::DrawableTranslation *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableTranslation, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableTranslation_y" "', argument " "1"" of type '" "Magick::DrawableTranslation const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableTranslation * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::DrawableTranslation const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableTranslation_templ<SWIG_OBJ_WRAP>::_wrap_DrawableTranslation__wrap_Magick_DrawableTranslation_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTranslation_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTranslation_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableTranslation_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableTranslation_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_Magick_DrawableViewbox_templ(const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__DrawableViewbox;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  ::ssize_t arg4 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  Magick::DrawableViewbox *result;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_DrawableViewbox.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_DrawableViewbox" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_DrawableViewbox" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_DrawableViewbox" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_DrawableViewbox" "', argument " "4"" of type '" "::ssize_t""'");
  } 
  arg4 = static_cast< ::ssize_t >(val4);{
    try {
      result = (Magick::DrawableViewbox *)new Magick::DrawableViewbox(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_Magick_DrawableViewbox_templ(bool, const Napi::CallbackInfo &info)
:_Magick_DrawableBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::~_Magick_DrawableViewbox_templ() {
  auto arg1 = reinterpret_cast<Magick::DrawableViewbox *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableViewbox_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_call" "', argument " "1"" of type '" "Magick::DrawableViewbox const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_DrawableViewbox_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::DrawableViewbox const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DrawableBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_DrawableViewbox_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_copy" "', argument " "1"" of type '" "Magick::DrawableViewbox const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DrawableBase *)((Magick::DrawableViewbox const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__DrawableBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_x1__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  ::ssize_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_x1" "', argument " "1"" of type '" "Magick::DrawableViewbox *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableViewbox_x1" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x1(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_x1__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ::ssize_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_x1" "', argument " "1"" of type '" "Magick::DrawableViewbox const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableViewbox const *)arg1)->x1();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_x1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_x1__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_x1__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_x1__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_x1__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x1.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_y1__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  ::ssize_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_y1" "', argument " "1"" of type '" "Magick::DrawableViewbox *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableViewbox_y1" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y1(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_y1__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ::ssize_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_y1" "', argument " "1"" of type '" "Magick::DrawableViewbox const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableViewbox const *)arg1)->y1();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_y1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_y1__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_y1__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_y1__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_y1__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y1.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_x2__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  ::ssize_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_x2" "', argument " "1"" of type '" "Magick::DrawableViewbox *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableViewbox_x2" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x2(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_x2__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ::ssize_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_x2" "', argument " "1"" of type '" "Magick::DrawableViewbox const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableViewbox const *)arg1)->x2();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_x2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_x2__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_x2__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_x2__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_x2__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x2.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_y2__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  ::ssize_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_y2" "', argument " "1"" of type '" "Magick::DrawableViewbox *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_DrawableViewbox_y2" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y2(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_Magick_DrawableViewbox_y2__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::DrawableViewbox *arg1 = (Magick::DrawableViewbox *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  ::ssize_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__DrawableViewbox, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_DrawableViewbox_y2" "', argument " "1"" of type '" "Magick::DrawableViewbox const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::DrawableViewbox * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::DrawableViewbox const *)arg1)->y2();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_DrawableViewbox_templ<SWIG_OBJ_WRAP>::_wrap_DrawableViewbox__wrap_Magick_DrawableViewbox_y2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_y2__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_y2__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_DrawableViewbox_y2__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_DrawableViewbox_y2__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y2.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcArgs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcArgs__SWIG_0.");
  }
  {
    try {
      result = (Magick::PathArcArgs *)new Magick::PathArcArgs();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcArgs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  bool arg4 ;
  bool arg5 ;
  double arg6 ;
  double arg7 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  double val7 ;
  int ecode7 = 0 ;
  Magick::PathArcArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 7 || static_cast<int>(info.Length()) > 7) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcArgs__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_PathArcArgs" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_PathArcArgs" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_PathArcArgs" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_bool(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_PathArcArgs" "', argument " "4"" of type '" "bool""'");
  } 
  arg4 = static_cast< bool >(val4);ecode5 = SWIG_AsVal_bool(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_PathArcArgs" "', argument " "5"" of type '" "bool""'");
  } 
  arg5 = static_cast< bool >(val5);ecode6 = SWIG_AsVal_double(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_PathArcArgs" "', argument " "6"" of type '" "double""'");
  } 
  arg6 = static_cast< double >(val6);ecode7 = SWIG_AsVal_double(info[6], &val7);
  if (!SWIG_IsOK(ecode7)) {
    SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "new_Magick_PathArcArgs" "', argument " "7"" of type '" "double""'");
  } 
  arg7 = static_cast< double >(val7);{
    try {
      result = (Magick::PathArcArgs *)new Magick::PathArcArgs(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcArgs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathArcArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcArgs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathArcArgs" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathArcArgs" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);{
    try {
      result = (Magick::PathArcArgs *)new Magick::PathArcArgs((Magick::PathArcArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_Magick_PathArcArgs_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathArcArgs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcArgs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcArgs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 7 && static_cast<int>(info.Length()) <= 7) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcArgs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcArgs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcArgs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcArgs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathArcArgs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_Magick_PathArcArgs_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::~_Magick_PathArcArgs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathArcArgs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_radiusX__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_radiusX" "', argument " "1"" of type '" "Magick::PathArcArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathArcArgs_radiusX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->radiusX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_radiusX__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_radiusX" "', argument " "1"" of type '" "Magick::PathArcArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathArcArgs const *)arg1)->radiusX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_radiusX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_radiusX__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_radiusX__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_radiusX__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_radiusX__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function radiusX.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_radiusY__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_radiusY" "', argument " "1"" of type '" "Magick::PathArcArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathArcArgs_radiusY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->radiusY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_radiusY__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_radiusY" "', argument " "1"" of type '" "Magick::PathArcArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathArcArgs const *)arg1)->radiusY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_radiusY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_radiusY__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_radiusY__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_radiusY__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_radiusY__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function radiusY.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_xAxisRotation__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_xAxisRotation" "', argument " "1"" of type '" "Magick::PathArcArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathArcArgs_xAxisRotation" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->xAxisRotation(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_xAxisRotation__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_xAxisRotation" "', argument " "1"" of type '" "Magick::PathArcArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathArcArgs const *)arg1)->xAxisRotation();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_xAxisRotation(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_xAxisRotation__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_xAxisRotation__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_xAxisRotation__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_xAxisRotation__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function xAxisRotation.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_largeArcFlag__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_largeArcFlag" "', argument " "1"" of type '" "Magick::PathArcArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathArcArgs_largeArcFlag" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->largeArcFlag(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_largeArcFlag__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_largeArcFlag" "', argument " "1"" of type '" "Magick::PathArcArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::PathArcArgs const *)arg1)->largeArcFlag();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_largeArcFlag(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_largeArcFlag__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_largeArcFlag__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_largeArcFlag__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_largeArcFlag__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function largeArcFlag.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_sweepFlag__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_sweepFlag" "', argument " "1"" of type '" "Magick::PathArcArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathArcArgs_sweepFlag" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sweepFlag(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_sweepFlag__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_sweepFlag" "', argument " "1"" of type '" "Magick::PathArcArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::PathArcArgs const *)arg1)->sweepFlag();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_sweepFlag(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_sweepFlag__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_sweepFlag__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_sweepFlag__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_sweepFlag__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sweepFlag.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_x" "', argument " "1"" of type '" "Magick::PathArcArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathArcArgs_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_x" "', argument " "1"" of type '" "Magick::PathArcArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathArcArgs const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_y" "', argument " "1"" of type '" "Magick::PathArcArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathArcArgs_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcArgs_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = (Magick::PathArcArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcArgs_y" "', argument " "1"" of type '" "Magick::PathArcArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathArcArgs const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathArcArgs__wrap_Magick_PathArcArgs_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathArcArgs_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathArcArgs_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = 0 ;
  Magick::PathArcArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathArcArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::PathArcArgs const &)*arg1,(Magick::PathArcArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = 0 ;
  Magick::PathArcArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathArcArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::PathArcArgs const &)*arg1,(Magick::PathArcArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gt__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = 0 ;
  Magick::PathArcArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gt" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gt" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathArcArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >((Magick::PathArcArgs const &)*arg1,(Magick::PathArcArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lt__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = 0 ;
  Magick::PathArcArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lt" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lt" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathArcArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <((Magick::PathArcArgs const &)*arg1,(Magick::PathArcArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gte__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = 0 ;
  Magick::PathArcArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gte" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gte" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathArcArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >=((Magick::PathArcArgs const &)*arg1,(Magick::PathArcArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lte__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcArgs *arg1 = 0 ;
  Magick::PathArcArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lte" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathArcArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lte" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "2"" of type '" "Magick::PathArcArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathArcArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <=((Magick::PathArcArgs const &)*arg1,(Magick::PathArcArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcAbs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathArcAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcAbs__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathArcAbs" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathArcAbs" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);{
    try {
      result = (Magick::PathArcAbs *)new Magick::PathArcAbs((Magick::PathArcArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcAbs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcArgsList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathArcAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcAbs__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__PathArcArgs_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathArcAbs" "', argument " "1"" of type '" "Magick::PathArcArgsList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathArcAbs" "', argument " "1"" of type '" "Magick::PathArcArgsList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathArcArgsList * >(argp1);{
    try {
      result = (Magick::PathArcAbs *)new Magick::PathArcAbs((Magick::PathArcArgsList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcAbs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcAbs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathArcAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcAbs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcAbs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathArcAbs" "', argument " "1"" of type '" "Magick::PathArcAbs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathArcAbs" "', argument " "1"" of type '" "Magick::PathArcAbs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathArcAbs * >(argp1);{
    try {
      result = (Magick::PathArcAbs *)new Magick::PathArcAbs((Magick::PathArcAbs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathArcAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathArcAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcAbs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcAbs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcAbs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcAbs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcAbs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcAbs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathArcAbs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathArcAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathArcAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathArcAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcAbs *arg1 = (Magick::PathArcAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathArcAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcAbs_call" "', argument " "1"" of type '" "Magick::PathArcAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathArcAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathArcAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcAbs *arg1 = (Magick::PathArcAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathArcAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcAbs_copy" "', argument " "1"" of type '" "Magick::PathArcAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathArcAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcRel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathArcRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcRel__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathArcRel" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathArcRel" "', argument " "1"" of type '" "Magick::PathArcArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathArcArgs * >(argp1);{
    try {
      result = (Magick::PathArcRel *)new Magick::PathArcRel((Magick::PathArcArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcRel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcArgsList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathArcRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcRel__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__PathArcArgs_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathArcRel" "', argument " "1"" of type '" "Magick::PathArcArgsList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathArcRel" "', argument " "1"" of type '" "Magick::PathArcArgsList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathArcArgsList * >(argp1);{
    try {
      result = (Magick::PathArcRel *)new Magick::PathArcRel((Magick::PathArcArgsList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathArcRel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathArcRel *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathArcRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathArcRel__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathArcRel,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathArcRel" "', argument " "1"" of type '" "Magick::PathArcRel const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathArcRel" "', argument " "1"" of type '" "Magick::PathArcRel const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathArcRel * >(argp1);{
    try {
      result = (Magick::PathArcRel *)new Magick::PathArcRel((Magick::PathArcRel const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::_Magick_PathArcRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathArcRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcRel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcRel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcRel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcRel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathArcRel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathArcRel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathArcRel");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::_Magick_PathArcRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathArcRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathArcRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcRel *arg1 = (Magick::PathArcRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathArcRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcRel_call" "', argument " "1"" of type '" "Magick::PathArcRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathArcRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathArcRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathArcRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathArcRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathArcRel *arg1 = (Magick::PathArcRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathArcRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathArcRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathArcRel_copy" "', argument " "1"" of type '" "Magick::PathArcRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathArcRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathArcRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_PathClosePath_templ<SWIG_OBJ_WRAP>::_Magick_PathClosePath_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__PathClosePath;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::PathClosePath *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathClosePath.");
  }
  {
    try {
      result = (Magick::PathClosePath *)new Magick::PathClosePath();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathClosePath_templ<SWIG_OBJ_WRAP>::_Magick_PathClosePath_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathClosePath_templ<SWIG_OBJ_WRAP>::~_Magick_PathClosePath_templ() {
  auto arg1 = reinterpret_cast<Magick::PathClosePath *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathClosePath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathClosePath_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathClosePath *arg1 = (Magick::PathClosePath *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathClosePath_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathClosePath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathClosePath_call" "', argument " "1"" of type '" "Magick::PathClosePath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathClosePath * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathClosePath_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathClosePath const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathClosePath_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathClosePath_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathClosePath *arg1 = (Magick::PathClosePath *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathClosePath_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathClosePath, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathClosePath_copy" "', argument " "1"" of type '" "Magick::PathClosePath const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathClosePath * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathClosePath const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoArgs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurvetoArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoArgs__SWIG_0.");
  }
  {
    try {
      result = (Magick::PathCurvetoArgs *)new Magick::PathCurvetoArgs();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoArgs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  double arg6 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  Magick::PathCurvetoArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoArgs__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_PathCurvetoArgs" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_PathCurvetoArgs" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_PathCurvetoArgs" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_PathCurvetoArgs" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_PathCurvetoArgs" "', argument " "5"" of type '" "double""'");
  } 
  arg5 = static_cast< double >(val5);ecode6 = SWIG_AsVal_double(info[5], &val6);
  if (!SWIG_IsOK(ecode6)) {
    SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "new_Magick_PathCurvetoArgs" "', argument " "6"" of type '" "double""'");
  } 
  arg6 = static_cast< double >(val6);{
    try {
      result = (Magick::PathCurvetoArgs *)new Magick::PathCurvetoArgs(arg1,arg2,arg3,arg4,arg5,arg6);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoArgs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathCurvetoArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoArgs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathCurvetoArgs" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathCurvetoArgs" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);{
    try {
      result = (Magick::PathCurvetoArgs *)new Magick::PathCurvetoArgs((Magick::PathCurvetoArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_Magick_PathCurvetoArgs_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathCurvetoArgs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoArgs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoArgs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 6 && static_cast<int>(info.Length()) <= 6) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoArgs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoArgs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoArgs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoArgs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathCurvetoArgs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_Magick_PathCurvetoArgs_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::~_Magick_PathCurvetoArgs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathCurvetoArgs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_x1__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_x1" "', argument " "1"" of type '" "Magick::PathCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathCurvetoArgs_x1" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x1(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_x1__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_x1" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathCurvetoArgs const *)arg1)->x1();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_x1__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_x1__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_x1__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_x1__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x1.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_y1__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_y1" "', argument " "1"" of type '" "Magick::PathCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathCurvetoArgs_y1" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y1(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_y1__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_y1" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathCurvetoArgs const *)arg1)->y1();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_y1__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_y1__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_y1__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_y1__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y1.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_x2__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_x2" "', argument " "1"" of type '" "Magick::PathCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathCurvetoArgs_x2" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x2(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_x2__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_x2" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathCurvetoArgs const *)arg1)->x2();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_x2__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_x2__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_x2__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_x2__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x2.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_y2__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_y2" "', argument " "1"" of type '" "Magick::PathCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathCurvetoArgs_y2" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y2(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_y2__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_y2" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathCurvetoArgs const *)arg1)->y2();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_y2__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_y2__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_y2__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_y2__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y2.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_x" "', argument " "1"" of type '" "Magick::PathCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathCurvetoArgs_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_x" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathCurvetoArgs const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_y" "', argument " "1"" of type '" "Magick::PathCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathCurvetoArgs_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoArgs_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = (Magick::PathCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoArgs_y" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathCurvetoArgs const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathCurvetoArgs__wrap_Magick_PathCurvetoArgs_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathCurvetoArgs_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathCurvetoArgs_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  Magick::PathCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::PathCurvetoArgs const &)*arg1,(Magick::PathCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  Magick::PathCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::PathCurvetoArgs const &)*arg1,(Magick::PathCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gt__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  Magick::PathCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gt" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gt" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >((Magick::PathCurvetoArgs const &)*arg1,(Magick::PathCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lt__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  Magick::PathCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lt" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lt" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <((Magick::PathCurvetoArgs const &)*arg1,(Magick::PathCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gte__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  Magick::PathCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gte" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gte" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >=((Magick::PathCurvetoArgs const &)*arg1,(Magick::PathCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lte__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  Magick::PathCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lte" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lte" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "2"" of type '" "Magick::PathCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <=((Magick::PathCurvetoArgs const &)*arg1,(Magick::PathCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoAbs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoAbs__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathCurvetoAbs" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathCurvetoAbs" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);{
    try {
      result = (Magick::PathCurvetoAbs *)new Magick::PathCurvetoAbs((Magick::PathCurvetoArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoAbs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurveToArgsList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoAbs__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__PathCurvetoArgs_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathCurvetoAbs" "', argument " "1"" of type '" "Magick::PathCurveToArgsList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathCurvetoAbs" "', argument " "1"" of type '" "Magick::PathCurveToArgsList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathCurveToArgsList * >(argp1);{
    try {
      result = (Magick::PathCurvetoAbs *)new Magick::PathCurvetoAbs((Magick::PathCurveToArgsList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoAbs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurvetoAbs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoAbs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoAbs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathCurvetoAbs" "', argument " "1"" of type '" "Magick::PathCurvetoAbs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathCurvetoAbs" "', argument " "1"" of type '" "Magick::PathCurvetoAbs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathCurvetoAbs * >(argp1);{
    try {
      result = (Magick::PathCurvetoAbs *)new Magick::PathCurvetoAbs((Magick::PathCurvetoAbs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathCurvetoAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathCurvetoAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoAbs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoAbs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoAbs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoAbs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoAbs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoAbs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathCurvetoAbs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathCurvetoAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathCurvetoAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathCurvetoAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoAbs *arg1 = (Magick::PathCurvetoAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathCurvetoAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoAbs_call" "', argument " "1"" of type '" "Magick::PathCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathCurvetoAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathCurvetoAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoAbs *arg1 = (Magick::PathCurvetoAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathCurvetoAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoAbs_copy" "', argument " "1"" of type '" "Magick::PathCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathCurvetoAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoRel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurvetoArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoRel__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathCurvetoRel" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathCurvetoRel" "', argument " "1"" of type '" "Magick::PathCurvetoArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathCurvetoArgs * >(argp1);{
    try {
      result = (Magick::PathCurvetoRel *)new Magick::PathCurvetoRel((Magick::PathCurvetoArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoRel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurveToArgsList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoRel__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__PathCurvetoArgs_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathCurvetoRel" "', argument " "1"" of type '" "Magick::PathCurveToArgsList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathCurvetoRel" "', argument " "1"" of type '" "Magick::PathCurveToArgsList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathCurveToArgsList * >(argp1);{
    try {
      result = (Magick::PathCurvetoRel *)new Magick::PathCurvetoRel((Magick::PathCurveToArgsList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathCurvetoRel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathCurvetoRel *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathCurvetoRel__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathCurvetoRel,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathCurvetoRel" "', argument " "1"" of type '" "Magick::PathCurvetoRel const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathCurvetoRel" "', argument " "1"" of type '" "Magick::PathCurvetoRel const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathCurvetoRel * >(argp1);{
    try {
      result = (Magick::PathCurvetoRel *)new Magick::PathCurvetoRel((Magick::PathCurvetoRel const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathCurvetoRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathCurvetoRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoRel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoRel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoRel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoRel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathCurvetoRel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathCurvetoRel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathCurvetoRel");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathCurvetoRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathCurvetoRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathCurvetoRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoRel *arg1 = (Magick::PathCurvetoRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathCurvetoRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoRel_call" "', argument " "1"" of type '" "Magick::PathCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathCurvetoRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathCurvetoRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathCurvetoRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathCurvetoRel *arg1 = (Magick::PathCurvetoRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathCurvetoRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathCurvetoRel_copy" "', argument " "1"" of type '" "Magick::PathCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathCurvetoRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathCurvetoRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothCurvetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothCurvetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathSmoothCurvetoAbs *)new Magick::PathSmoothCurvetoAbs((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothCurvetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothCurvetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathSmoothCurvetoAbs *)new Magick::PathSmoothCurvetoAbs((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathSmoothCurvetoAbs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathSmoothCurvetoAbs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothCurvetoAbs" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoAbs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothCurvetoAbs" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoAbs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathSmoothCurvetoAbs * >(argp1);{
    try {
      result = (Magick::PathSmoothCurvetoAbs *)new Magick::PathSmoothCurvetoAbs((Magick::PathSmoothCurvetoAbs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothCurvetoAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathSmoothCurvetoAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothCurvetoAbs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathSmoothCurvetoAbs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothCurvetoAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathSmoothCurvetoAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathSmoothCurvetoAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothCurvetoAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothCurvetoAbs *arg1 = (Magick::PathSmoothCurvetoAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothCurvetoAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothCurvetoAbs_call" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothCurvetoAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathSmoothCurvetoAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathSmoothCurvetoAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothCurvetoAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothCurvetoAbs *arg1 = (Magick::PathSmoothCurvetoAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothCurvetoAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothCurvetoAbs_copy" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothCurvetoAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathSmoothCurvetoAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothCurvetoRel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothCurvetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothCurvetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathSmoothCurvetoRel *)new Magick::PathSmoothCurvetoRel((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothCurvetoRel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothCurvetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothCurvetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathSmoothCurvetoRel *)new Magick::PathSmoothCurvetoRel((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothCurvetoRel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathSmoothCurvetoRel *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathSmoothCurvetoRel,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothCurvetoRel" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoRel const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothCurvetoRel" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoRel const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathSmoothCurvetoRel * >(argp1);{
    try {
      result = (Magick::PathSmoothCurvetoRel *)new Magick::PathSmoothCurvetoRel((Magick::PathSmoothCurvetoRel const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothCurvetoRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathSmoothCurvetoRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothCurvetoRel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathSmoothCurvetoRel");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothCurvetoRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathSmoothCurvetoRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathSmoothCurvetoRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothCurvetoRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothCurvetoRel *arg1 = (Magick::PathSmoothCurvetoRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothCurvetoRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothCurvetoRel_call" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothCurvetoRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathSmoothCurvetoRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathSmoothCurvetoRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothCurvetoRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothCurvetoRel *arg1 = (Magick::PathSmoothCurvetoRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothCurvetoRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothCurvetoRel_copy" "', argument " "1"" of type '" "Magick::PathSmoothCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothCurvetoRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathSmoothCurvetoRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_0.");
  }
  {
    try {
      result = (Magick::PathQuadraticCurvetoArgs *)new Magick::PathQuadraticCurvetoArgs();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  Magick::PathQuadraticCurvetoArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_PathQuadraticCurvetoArgs" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_PathQuadraticCurvetoArgs" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_PathQuadraticCurvetoArgs" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_PathQuadraticCurvetoArgs" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    try {
      result = (Magick::PathQuadraticCurvetoArgs *)new Magick::PathQuadraticCurvetoArgs(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathQuadraticCurvetoArgs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathQuadraticCurvetoArgs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathQuadraticCurvetoArgs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);{
    try {
      result = (Magick::PathQuadraticCurvetoArgs *)new Magick::PathQuadraticCurvetoArgs((Magick::PathQuadraticCurvetoArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_Magick_PathQuadraticCurvetoArgs_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoArgs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathQuadraticCurvetoArgs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_Magick_PathQuadraticCurvetoArgs_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::~_Magick_PathQuadraticCurvetoArgs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathQuadraticCurvetoArgs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_x1" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathQuadraticCurvetoArgs_x1" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x1(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_x1" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathQuadraticCurvetoArgs const *)arg1)->x1();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_x1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_x1__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x1.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_y1" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathQuadraticCurvetoArgs_y1" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y1(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_y1" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathQuadraticCurvetoArgs const *)arg1)->y1();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_y1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_y1__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y1.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_x" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathQuadraticCurvetoArgs_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_x" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathQuadraticCurvetoArgs const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_y" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathQuadraticCurvetoArgs_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = (Magick::PathQuadraticCurvetoArgs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoArgs_y" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathQuadraticCurvetoArgs const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoArgs_templ<SWIG_OBJ_WRAP>::_wrap_PathQuadraticCurvetoArgs__wrap_Magick_PathQuadraticCurvetoArgs_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathQuadraticCurvetoArgs_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  Magick::PathQuadraticCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::PathQuadraticCurvetoArgs const &)*arg1,(Magick::PathQuadraticCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  Magick::PathQuadraticCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::PathQuadraticCurvetoArgs const &)*arg1,(Magick::PathQuadraticCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gt__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  Magick::PathQuadraticCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gt" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gt" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >((Magick::PathQuadraticCurvetoArgs const &)*arg1,(Magick::PathQuadraticCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lt__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  Magick::PathQuadraticCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lt" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lt" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <((Magick::PathQuadraticCurvetoArgs const &)*arg1,(Magick::PathQuadraticCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gte__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  Magick::PathQuadraticCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gte" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gte" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >=((Magick::PathQuadraticCurvetoArgs const &)*arg1,(Magick::PathQuadraticCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lte__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  Magick::PathQuadraticCurvetoArgs *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lte" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lte" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "2"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <=((Magick::PathQuadraticCurvetoArgs const &)*arg1,(Magick::PathQuadraticCurvetoArgs const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathQuadraticCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);{
    try {
      result = (Magick::PathQuadraticCurvetoAbs *)new Magick::PathQuadraticCurvetoAbs((Magick::PathQuadraticCurvetoArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoArgsList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathQuadraticCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgsList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgsList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgsList * >(argp1);{
    try {
      result = (Magick::PathQuadraticCurvetoAbs *)new Magick::PathQuadraticCurvetoAbs((Magick::PathQuadraticCurvetoArgsList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoAbs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathQuadraticCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoAbs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoAbs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoAbs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoAbs * >(argp1);{
    try {
      result = (Magick::PathQuadraticCurvetoAbs *)new Magick::PathQuadraticCurvetoAbs((Magick::PathQuadraticCurvetoAbs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathQuadraticCurvetoAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathQuadraticCurvetoAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoAbs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathQuadraticCurvetoAbs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathQuadraticCurvetoAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathQuadraticCurvetoAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathQuadraticCurvetoAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoAbs *arg1 = (Magick::PathQuadraticCurvetoAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathQuadraticCurvetoAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoAbs_call" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathQuadraticCurvetoAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathQuadraticCurvetoAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoAbs *arg1 = (Magick::PathQuadraticCurvetoAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathQuadraticCurvetoAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoAbs_copy" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathQuadraticCurvetoAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoArgs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathQuadraticCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgs * >(argp1);{
    try {
      result = (Magick::PathQuadraticCurvetoRel *)new Magick::PathQuadraticCurvetoRel((Magick::PathQuadraticCurvetoArgs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoArgsList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathQuadraticCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgsList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoArgsList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoArgsList * >(argp1);{
    try {
      result = (Magick::PathQuadraticCurvetoRel *)new Magick::PathQuadraticCurvetoRel((Magick::PathQuadraticCurvetoArgsList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathQuadraticCurvetoRel *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathQuadraticCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathQuadraticCurvetoRel,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoRel const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoRel const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoRel * >(argp1);{
    try {
      result = (Magick::PathQuadraticCurvetoRel *)new Magick::PathQuadraticCurvetoRel((Magick::PathQuadraticCurvetoRel const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathQuadraticCurvetoRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathQuadraticCurvetoRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathQuadraticCurvetoRel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathQuadraticCurvetoRel");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathQuadraticCurvetoRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathQuadraticCurvetoRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathQuadraticCurvetoRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoRel *arg1 = (Magick::PathQuadraticCurvetoRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathQuadraticCurvetoRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoRel_call" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathQuadraticCurvetoRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathQuadraticCurvetoRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathQuadraticCurvetoRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathQuadraticCurvetoRel *arg1 = (Magick::PathQuadraticCurvetoRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathQuadraticCurvetoRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathQuadraticCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathQuadraticCurvetoRel_copy" "', argument " "1"" of type '" "Magick::PathQuadraticCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathQuadraticCurvetoRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathQuadraticCurvetoRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothQuadraticCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathSmoothQuadraticCurvetoAbs *)new Magick::PathSmoothQuadraticCurvetoAbs((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothQuadraticCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathSmoothQuadraticCurvetoAbs *)new Magick::PathSmoothQuadraticCurvetoAbs((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathSmoothQuadraticCurvetoAbs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothQuadraticCurvetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoAbs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoAbs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothQuadraticCurvetoAbs" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoAbs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathSmoothQuadraticCurvetoAbs * >(argp1);{
    try {
      result = (Magick::PathSmoothQuadraticCurvetoAbs *)new Magick::PathSmoothQuadraticCurvetoAbs((Magick::PathSmoothQuadraticCurvetoAbs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothQuadraticCurvetoAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothQuadraticCurvetoAbs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathSmoothQuadraticCurvetoAbs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothQuadraticCurvetoAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathSmoothQuadraticCurvetoAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathSmoothQuadraticCurvetoAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothQuadraticCurvetoAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothQuadraticCurvetoAbs *arg1 = (Magick::PathSmoothQuadraticCurvetoAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothQuadraticCurvetoAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothQuadraticCurvetoAbs_call" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothQuadraticCurvetoAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathSmoothQuadraticCurvetoAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathSmoothQuadraticCurvetoAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothQuadraticCurvetoAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothQuadraticCurvetoAbs *arg1 = (Magick::PathSmoothQuadraticCurvetoAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothQuadraticCurvetoAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothQuadraticCurvetoAbs_copy" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothQuadraticCurvetoAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathSmoothQuadraticCurvetoAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothQuadraticCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathSmoothQuadraticCurvetoRel *)new Magick::PathSmoothQuadraticCurvetoRel((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothQuadraticCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathSmoothQuadraticCurvetoRel *)new Magick::PathSmoothQuadraticCurvetoRel((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathSmoothQuadraticCurvetoRel *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathSmoothQuadraticCurvetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoRel,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathSmoothQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoRel const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathSmoothQuadraticCurvetoRel" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoRel const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathSmoothQuadraticCurvetoRel * >(argp1);{
    try {
      result = (Magick::PathSmoothQuadraticCurvetoRel *)new Magick::PathSmoothQuadraticCurvetoRel((Magick::PathSmoothQuadraticCurvetoRel const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothQuadraticCurvetoRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathSmoothQuadraticCurvetoRel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathSmoothQuadraticCurvetoRel");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathSmoothQuadraticCurvetoRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathSmoothQuadraticCurvetoRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathSmoothQuadraticCurvetoRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothQuadraticCurvetoRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothQuadraticCurvetoRel *arg1 = (Magick::PathSmoothQuadraticCurvetoRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothQuadraticCurvetoRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothQuadraticCurvetoRel_call" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothQuadraticCurvetoRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathSmoothQuadraticCurvetoRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathSmoothQuadraticCurvetoRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathSmoothQuadraticCurvetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathSmoothQuadraticCurvetoRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathSmoothQuadraticCurvetoRel *arg1 = (Magick::PathSmoothQuadraticCurvetoRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathSmoothQuadraticCurvetoRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathSmoothQuadraticCurvetoRel_copy" "', argument " "1"" of type '" "Magick::PathSmoothQuadraticCurvetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathSmoothQuadraticCurvetoRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathSmoothQuadraticCurvetoRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathLinetoAbs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathLinetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoAbs__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathLinetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathLinetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathLinetoAbs *)new Magick::PathLinetoAbs((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathLinetoAbs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathLinetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoAbs__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathLinetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathLinetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathLinetoAbs *)new Magick::PathLinetoAbs((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathLinetoAbs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathLinetoAbs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathLinetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoAbs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathLinetoAbs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathLinetoAbs" "', argument " "1"" of type '" "Magick::PathLinetoAbs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathLinetoAbs" "', argument " "1"" of type '" "Magick::PathLinetoAbs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathLinetoAbs * >(argp1);{
    try {
      result = (Magick::PathLinetoAbs *)new Magick::PathLinetoAbs((Magick::PathLinetoAbs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathLinetoAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathLinetoAbs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathLinetoAbs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathLinetoAbs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathLinetoAbs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathLinetoAbs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathLinetoAbs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathLinetoAbs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathLinetoAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathLinetoAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoAbs *arg1 = (Magick::PathLinetoAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoAbs_call" "', argument " "1"" of type '" "Magick::PathLinetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathLinetoAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathLinetoAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoAbs *arg1 = (Magick::PathLinetoAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoAbs_copy" "', argument " "1"" of type '" "Magick::PathLinetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathLinetoAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathLinetoRel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathLinetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoRel__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathLinetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathLinetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathLinetoRel *)new Magick::PathLinetoRel((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathLinetoRel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathLinetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoRel__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathLinetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathLinetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathLinetoRel *)new Magick::PathLinetoRel((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathLinetoRel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathLinetoRel *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathLinetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoRel__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathLinetoRel,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathLinetoRel" "', argument " "1"" of type '" "Magick::PathLinetoRel const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathLinetoRel" "', argument " "1"" of type '" "Magick::PathLinetoRel const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathLinetoRel * >(argp1);{
    try {
      result = (Magick::PathLinetoRel *)new Magick::PathLinetoRel((Magick::PathLinetoRel const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathLinetoRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathLinetoRel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathLinetoRel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathLinetoRel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathLinetoRel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathLinetoRel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathLinetoRel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathLinetoRel");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathLinetoRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathLinetoRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoRel *arg1 = (Magick::PathLinetoRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoRel_call" "', argument " "1"" of type '" "Magick::PathLinetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathLinetoRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathLinetoRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoRel *arg1 = (Magick::PathLinetoRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoRel_copy" "', argument " "1"" of type '" "Magick::PathLinetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathLinetoRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoHorizontalAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__PathLinetoHorizontalAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::PathLinetoHorizontalAbs *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoHorizontalAbs.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_PathLinetoHorizontalAbs" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::PathLinetoHorizontalAbs *)new Magick::PathLinetoHorizontalAbs(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoHorizontalAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathLinetoHorizontalAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathLinetoHorizontalAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalAbs *arg1 = (Magick::PathLinetoHorizontalAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoHorizontalAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalAbs_call" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathLinetoHorizontalAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathLinetoHorizontalAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalAbs *arg1 = (Magick::PathLinetoHorizontalAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoHorizontalAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalAbs_copy" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathLinetoHorizontalAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalAbs *arg1 = (Magick::PathLinetoHorizontalAbs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalAbs_x" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalAbs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalAbs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathLinetoHorizontalAbs_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalAbs *arg1 = (Magick::PathLinetoHorizontalAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalAbs_x" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathLinetoHorizontalAbs const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalAbs_templ<SWIG_OBJ_WRAP>::_wrap_PathLinetoHorizontalAbs__wrap_Magick_PathLinetoHorizontalAbs_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoHorizontalAbs_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoHorizontalRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__PathLinetoHorizontalRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::PathLinetoHorizontalRel *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoHorizontalRel.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_PathLinetoHorizontalRel" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::PathLinetoHorizontalRel *)new Magick::PathLinetoHorizontalRel(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoHorizontalRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathLinetoHorizontalRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathLinetoHorizontalRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalRel *arg1 = (Magick::PathLinetoHorizontalRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoHorizontalRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalRel_call" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathLinetoHorizontalRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathLinetoHorizontalRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalRel *arg1 = (Magick::PathLinetoHorizontalRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoHorizontalRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalRel_copy" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathLinetoHorizontalRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalRel_x__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalRel *arg1 = (Magick::PathLinetoHorizontalRel *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalRel_x" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalRel *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalRel * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathLinetoHorizontalRel_x" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoHorizontalRel_x__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoHorizontalRel *arg1 = (Magick::PathLinetoHorizontalRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoHorizontalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoHorizontalRel_x" "', argument " "1"" of type '" "Magick::PathLinetoHorizontalRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoHorizontalRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathLinetoHorizontalRel const *)arg1)->x();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoHorizontalRel_templ<SWIG_OBJ_WRAP>::_wrap_PathLinetoHorizontalRel__wrap_Magick_PathLinetoHorizontalRel_x(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoHorizontalRel_x__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoHorizontalRel_x__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoHorizontalRel_x__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoHorizontalRel_x__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoVerticalAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__PathLinetoVerticalAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::PathLinetoVerticalAbs *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoVerticalAbs.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_PathLinetoVerticalAbs" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::PathLinetoVerticalAbs *)new Magick::PathLinetoVerticalAbs(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoVerticalAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathLinetoVerticalAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathLinetoVerticalAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalAbs *arg1 = (Magick::PathLinetoVerticalAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoVerticalAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalAbs_call" "', argument " "1"" of type '" "Magick::PathLinetoVerticalAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathLinetoVerticalAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathLinetoVerticalAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalAbs *arg1 = (Magick::PathLinetoVerticalAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoVerticalAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalAbs_copy" "', argument " "1"" of type '" "Magick::PathLinetoVerticalAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathLinetoVerticalAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalAbs_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalAbs *arg1 = (Magick::PathLinetoVerticalAbs *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalAbs_y" "', argument " "1"" of type '" "Magick::PathLinetoVerticalAbs *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalAbs * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathLinetoVerticalAbs_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalAbs_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalAbs *arg1 = (Magick::PathLinetoVerticalAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalAbs_y" "', argument " "1"" of type '" "Magick::PathLinetoVerticalAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathLinetoVerticalAbs const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalAbs_templ<SWIG_OBJ_WRAP>::_wrap_PathLinetoVerticalAbs__wrap_Magick_PathLinetoVerticalAbs_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoVerticalAbs_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoVerticalAbs_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoVerticalAbs_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoVerticalAbs_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoVerticalRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__PathLinetoVerticalRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::PathLinetoVerticalRel *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathLinetoVerticalRel.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_PathLinetoVerticalRel" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::PathLinetoVerticalRel *)new Magick::PathLinetoVerticalRel(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::_Magick_PathLinetoVerticalRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathLinetoVerticalRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathLinetoVerticalRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalRel *arg1 = (Magick::PathLinetoVerticalRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoVerticalRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalRel_call" "', argument " "1"" of type '" "Magick::PathLinetoVerticalRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathLinetoVerticalRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathLinetoVerticalRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalRel *arg1 = (Magick::PathLinetoVerticalRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathLinetoVerticalRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalRel_copy" "', argument " "1"" of type '" "Magick::PathLinetoVerticalRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathLinetoVerticalRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalRel_y__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalRel *arg1 = (Magick::PathLinetoVerticalRel *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalRel_y" "', argument " "1"" of type '" "Magick::PathLinetoVerticalRel *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalRel * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_PathLinetoVerticalRel_y" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->y(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathLinetoVerticalRel_y__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathLinetoVerticalRel *arg1 = (Magick::PathLinetoVerticalRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathLinetoVerticalRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathLinetoVerticalRel_y" "', argument " "1"" of type '" "Magick::PathLinetoVerticalRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathLinetoVerticalRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::PathLinetoVerticalRel const *)arg1)->y();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathLinetoVerticalRel_templ<SWIG_OBJ_WRAP>::_wrap_PathLinetoVerticalRel__wrap_Magick_PathLinetoVerticalRel_y(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoVerticalRel_y__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoVerticalRel_y__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_PathLinetoVerticalRel_y__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_PathLinetoVerticalRel_y__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function y.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathMovetoAbs__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathMovetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathMovetoAbs__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathMovetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathMovetoAbs" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathMovetoAbs *)new Magick::PathMovetoAbs((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathMovetoAbs__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathMovetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathMovetoAbs__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathMovetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathMovetoAbs" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathMovetoAbs *)new Magick::PathMovetoAbs((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathMovetoAbs__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathMovetoAbs *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathMovetoAbs *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathMovetoAbs__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathMovetoAbs,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathMovetoAbs" "', argument " "1"" of type '" "Magick::PathMovetoAbs const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathMovetoAbs" "', argument " "1"" of type '" "Magick::PathMovetoAbs const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathMovetoAbs * >(argp1);{
    try {
      result = (Magick::PathMovetoAbs *)new Magick::PathMovetoAbs((Magick::PathMovetoAbs const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathMovetoAbs_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathMovetoAbs;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathMovetoAbs__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathMovetoAbs__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathMovetoAbs__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathMovetoAbs__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathMovetoAbs__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathMovetoAbs__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathMovetoAbs");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::_Magick_PathMovetoAbs_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::~_Magick_PathMovetoAbs_templ() {
  auto arg1 = reinterpret_cast<Magick::PathMovetoAbs *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathMovetoAbs_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathMovetoAbs *arg1 = (Magick::PathMovetoAbs *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathMovetoAbs_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathMovetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathMovetoAbs_call" "', argument " "1"" of type '" "Magick::PathMovetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathMovetoAbs * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathMovetoAbs_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathMovetoAbs const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoAbs_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathMovetoAbs_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathMovetoAbs *arg1 = (Magick::PathMovetoAbs *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathMovetoAbs_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathMovetoAbs, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathMovetoAbs_copy" "', argument " "1"" of type '" "Magick::PathMovetoAbs const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathMovetoAbs * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathMovetoAbs const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathMovetoRel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Coordinate *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathMovetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathMovetoRel__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Coordinate,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathMovetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathMovetoRel" "', argument " "1"" of type '" "Magick::Coordinate const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Coordinate * >(argp1);{
    try {
      result = (Magick::PathMovetoRel *)new Magick::PathMovetoRel((Magick::Coordinate const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathMovetoRel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoordinateList *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathMovetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathMovetoRel__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__Coordinate_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathMovetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathMovetoRel" "', argument " "1"" of type '" "Magick::CoordinateList const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoordinateList * >(argp1);{
    try {
      result = (Magick::PathMovetoRel *)new Magick::PathMovetoRel((Magick::CoordinateList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_PathMovetoRel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PathMovetoRel *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::PathMovetoRel *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_PathMovetoRel__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__PathMovetoRel,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_PathMovetoRel" "', argument " "1"" of type '" "Magick::PathMovetoRel const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_PathMovetoRel" "', argument " "1"" of type '" "Magick::PathMovetoRel const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::PathMovetoRel * >(argp1);{
    try {
      result = (Magick::PathMovetoRel *)new Magick::PathMovetoRel((Magick::PathMovetoRel const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathMovetoRel_templ(const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__PathMovetoRel;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathMovetoRel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathMovetoRel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathMovetoRel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathMovetoRel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_PathMovetoRel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_PathMovetoRel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_PathMovetoRel");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::_Magick_PathMovetoRel_templ(bool, const Napi::CallbackInfo &info)
:_Magick_VPathBase_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::~_Magick_PathMovetoRel_templ() {
  auto arg1 = reinterpret_cast<Magick::PathMovetoRel *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathMovetoRel_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathMovetoRel *arg1 = (Magick::PathMovetoRel *) 0 ;
  MagickCore::DrawingWand *arg2 = (MagickCore::DrawingWand *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathMovetoRel_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathMovetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathMovetoRel_call" "', argument " "1"" of type '" "Magick::PathMovetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathMovetoRel * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p__DrawingWand, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_PathMovetoRel_call" "', argument " "2"" of type '" "MagickCore::DrawingWand *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::DrawingWand * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::PathMovetoRel const *)arg1)->operator ()(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_PathMovetoRel_templ<SWIG_OBJ_WRAP>::_wrap_Magick_PathMovetoRel_copy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::PathMovetoRel *arg1 = (Magick::PathMovetoRel *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VPathBase *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_PathMovetoRel_copy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__PathMovetoRel, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_PathMovetoRel_copy" "', argument " "1"" of type '" "Magick::PathMovetoRel const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::PathMovetoRel * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VPathBase *)((Magick::PathMovetoRel const *)arg1)->copy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__VPathBase, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ErrorPolicy_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ErrorPolicy__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::ErrorPolicy *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ErrorPolicy__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ErrorPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ErrorPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::ErrorPolicy *)new Magick::ErrorPolicy((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ErrorPolicy_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ErrorPolicy__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::Exception *arg2 = (Magick::Exception *) 0 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::ErrorPolicy *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ErrorPolicy__SWIG_1.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ErrorPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ErrorPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_Magick__Exception, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_ErrorPolicy" "', argument " "2"" of type '" "Magick::Exception *""'"); 
  }
  arg2 = reinterpret_cast< Magick::Exception * >(argp2);{
    try {
      result = (Magick::ErrorPolicy *)new Magick::ErrorPolicy((std::string const &)*arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ErrorPolicy_templ<SWIG_OBJ_WRAP>::_Magick_ErrorPolicy_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ErrorPolicy;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ErrorPolicy__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ErrorPolicy__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ErrorPolicy__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ErrorPolicy__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ErrorPolicy");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ErrorPolicy_templ<SWIG_OBJ_WRAP>::_Magick_ErrorPolicy_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ErrorPolicy_templ<SWIG_OBJ_WRAP>::~_Magick_ErrorPolicy_templ() {
  auto arg1 = reinterpret_cast<Magick::ErrorPolicy *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ErrorType_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ErrorType__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::ErrorType *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ErrorType__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ErrorType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ErrorType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::ErrorType *)new Magick::ErrorType((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ErrorType_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ErrorType__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::Exception *arg2 = (Magick::Exception *) 0 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::ErrorType *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ErrorType__SWIG_1.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ErrorType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ErrorType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_Magick__Exception, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_ErrorType" "', argument " "2"" of type '" "Magick::Exception *""'"); 
  }
  arg2 = reinterpret_cast< Magick::Exception * >(argp2);{
    try {
      result = (Magick::ErrorType *)new Magick::ErrorType((std::string const &)*arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ErrorType_templ<SWIG_OBJ_WRAP>::_Magick_ErrorType_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ErrorType;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ErrorType__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ErrorType__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ErrorType__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ErrorType__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ErrorType");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ErrorType_templ<SWIG_OBJ_WRAP>::_Magick_ErrorType_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ErrorType_templ<SWIG_OBJ_WRAP>::~_Magick_ErrorType_templ() {
  auto arg1 = reinterpret_cast<Magick::ErrorType *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_WarningPolicy_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_WarningPolicy__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::WarningPolicy *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_WarningPolicy__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_WarningPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_WarningPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::WarningPolicy *)new Magick::WarningPolicy((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_WarningPolicy_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_WarningPolicy__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::Exception *arg2 = (Magick::Exception *) 0 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::WarningPolicy *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_WarningPolicy__SWIG_1.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_WarningPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_WarningPolicy" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_Magick__Exception, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_WarningPolicy" "', argument " "2"" of type '" "Magick::Exception *""'"); 
  }
  arg2 = reinterpret_cast< Magick::Exception * >(argp2);{
    try {
      result = (Magick::WarningPolicy *)new Magick::WarningPolicy((std::string const &)*arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_WarningPolicy_templ<SWIG_OBJ_WRAP>::_Magick_WarningPolicy_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__WarningPolicy;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_WarningPolicy__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_WarningPolicy__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_WarningPolicy__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_WarningPolicy__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_WarningPolicy");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_WarningPolicy_templ<SWIG_OBJ_WRAP>::_Magick_WarningPolicy_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_WarningPolicy_templ<SWIG_OBJ_WRAP>::~_Magick_WarningPolicy_templ() {
  auto arg1 = reinterpret_cast<Magick::WarningPolicy *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_WarningType_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_WarningType__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::WarningType *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_WarningType__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_WarningType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_WarningType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::WarningType *)new Magick::WarningType((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_WarningType_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_WarningType__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::Exception *arg2 = (Magick::Exception *) 0 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::WarningType *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_WarningType__SWIG_1.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_WarningType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_WarningType" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_Magick__Exception, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_WarningType" "', argument " "2"" of type '" "Magick::Exception *""'"); 
  }
  arg2 = reinterpret_cast< Magick::Exception * >(argp2);{
    try {
      result = (Magick::WarningType *)new Magick::WarningType((std::string const &)*arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_WarningType_templ<SWIG_OBJ_WRAP>::_Magick_WarningType_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__WarningType;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_WarningType__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_WarningType__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_WarningType__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_WarningType__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_WarningType");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_WarningType_templ<SWIG_OBJ_WRAP>::_Magick_WarningType_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_WarningType_templ<SWIG_OBJ_WRAP>::~_Magick_WarningType_templ() {
  auto arg1 = reinterpret_cast<Magick::WarningType *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelMoments__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ChannelMoments *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelMoments__SWIG_0.");
  }
  {
    try {
      result = (Magick::ChannelMoments *)new Magick::ChannelMoments();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelMoments__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ChannelMoments *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ChannelMoments *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelMoments__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__ChannelMoments,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ChannelMoments" "', argument " "1"" of type '" "Magick::ChannelMoments const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ChannelMoments" "', argument " "1"" of type '" "Magick::ChannelMoments const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);{
    try {
      result = (Magick::ChannelMoments *)new Magick::ChannelMoments((Magick::ChannelMoments const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::~_Magick_ChannelMoments_templ() {
  auto arg1 = reinterpret_cast<Magick::ChannelMoments *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_centroidX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_centroidX.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_centroidX" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->centroidX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_centroidY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_centroidY.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_centroidY" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->centroidY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_channel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::PixelChannel result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_channel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_channel" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::PixelChannel)((Magick::ChannelMoments const *)arg1)->channel();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_ellipseAxisX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_ellipseAxisX.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_ellipseAxisX" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->ellipseAxisX();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_ellipseAxisY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_ellipseAxisY.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_ellipseAxisY" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->ellipseAxisY();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_ellipseAngle(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_ellipseAngle.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_ellipseAngle" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->ellipseAngle();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_ellipseEccentricity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_ellipseEccentricity.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_ellipseEccentricity" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->ellipseEccentricity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_ellipseIntensity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_ellipseIntensity.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_ellipseIntensity" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->ellipseIntensity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_huInvariants(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_huInvariants.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_huInvariants" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ChannelMoments_huInvariants" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelMoments const *)arg1)->huInvariants(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelMoments_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelMoments *arg1 = (Magick::ChannelMoments *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelMoments_isValid.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelMoments_isValid" "', argument " "1"" of type '" "Magick::ChannelMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelMoments * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::ChannelMoments const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelMoments__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PixelChannel arg1 ;
  MagickCore::ChannelMoments *arg2 = (MagickCore::ChannelMoments *) 0 ;
  int val1 ;
  int ecode1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::ChannelMoments *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelMoments__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ChannelMoments" "', argument " "1"" of type '" "Magick::PixelChannel""'");
  } 
  arg1 = static_cast< Magick::PixelChannel >(val1);res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_MagickCore___ChannelMoments, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_ChannelMoments" "', argument " "2"" of type '" "MagickCore::ChannelMoments const *""'"); 
  }
  arg2 = reinterpret_cast< MagickCore::ChannelMoments * >(argp2);{
    try {
      result = (Magick::ChannelMoments *)new Magick::ChannelMoments(arg1,(MagickCore::ChannelMoments const *)arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_Magick_ChannelMoments_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ChannelMoments;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelMoments__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelMoments__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelMoments__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelMoments__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelMoments__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelMoments__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ChannelMoments");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelMoments_templ<SWIG_OBJ_WRAP>::_Magick_ChannelMoments_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelPerceptualHash__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ChannelPerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelPerceptualHash__SWIG_0.");
  }
  {
    try {
      result = (Magick::ChannelPerceptualHash *)new Magick::ChannelPerceptualHash();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelPerceptualHash__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ChannelPerceptualHash *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ChannelPerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelPerceptualHash__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__ChannelPerceptualHash,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ChannelPerceptualHash" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ChannelPerceptualHash" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp1);{
    try {
      result = (Magick::ChannelPerceptualHash *)new Magick::ChannelPerceptualHash((Magick::ChannelPerceptualHash const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelPerceptualHash__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PixelChannel arg1 ;
  std::string *arg2 = 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  Magick::ChannelPerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelPerceptualHash__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ChannelPerceptualHash" "', argument " "1"" of type '" "Magick::PixelChannel""'");
  } 
  arg1 = static_cast< Magick::PixelChannel >(val1);{
    {
      std::string *ptr = (std::string *)0;
      res2 = SWIG_AsPtr_std_string(info[1], &ptr);
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_ChannelPerceptualHash" "', argument " "2"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ChannelPerceptualHash" "', argument " "2"" of type '" "std::string const &""'"); 
      }
      arg2 = ptr;
    }
  }
  {
    try {
      result = (Magick::ChannelPerceptualHash *)new Magick::ChannelPerceptualHash(arg1,(std::string const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res2)) delete arg2;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::~_Magick_ChannelPerceptualHash_templ() {
  auto arg1 = reinterpret_cast<Magick::ChannelPerceptualHash *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelPerceptualHash_toString(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelPerceptualHash *arg1 = (Magick::ChannelPerceptualHash *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelPerceptualHash_toString.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelPerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelPerceptualHash_toString" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ChannelPerceptualHash const *)arg1)->operator std::string();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelPerceptualHash_channel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelPerceptualHash *arg1 = (Magick::ChannelPerceptualHash *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::PixelChannel result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelPerceptualHash_channel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelPerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelPerceptualHash_channel" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::PixelChannel)((Magick::ChannelPerceptualHash const *)arg1)->channel();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelPerceptualHash_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelPerceptualHash *arg1 = (Magick::ChannelPerceptualHash *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelPerceptualHash_isValid.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelPerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelPerceptualHash_isValid" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::ChannelPerceptualHash const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelPerceptualHash_sumSquaredDifferences(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelPerceptualHash *arg1 = (Magick::ChannelPerceptualHash *) 0 ;
  Magick::ChannelPerceptualHash *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelPerceptualHash_sumSquaredDifferences.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelPerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelPerceptualHash_sumSquaredDifferences" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__ChannelPerceptualHash,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_ChannelPerceptualHash_sumSquaredDifferences" "', argument " "2"" of type '" "Magick::ChannelPerceptualHash const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ChannelPerceptualHash_sumSquaredDifferences" "', argument " "2"" of type '" "Magick::ChannelPerceptualHash const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)(arg1)->sumSquaredDifferences((Magick::ChannelPerceptualHash const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelPerceptualHash_srgbHuPhash(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelPerceptualHash *arg1 = (Magick::ChannelPerceptualHash *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelPerceptualHash_srgbHuPhash.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelPerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelPerceptualHash_srgbHuPhash" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ChannelPerceptualHash_srgbHuPhash" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelPerceptualHash const *)arg1)->srgbHuPhash(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelPerceptualHash_hclpHuPhash(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelPerceptualHash *arg1 = (Magick::ChannelPerceptualHash *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelPerceptualHash_hclpHuPhash.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelPerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelPerceptualHash_hclpHuPhash" "', argument " "1"" of type '" "Magick::ChannelPerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelPerceptualHash * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ChannelPerceptualHash_hclpHuPhash" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelPerceptualHash const *)arg1)->hclpHuPhash(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelPerceptualHash__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PixelChannel arg1 ;
  MagickCore::ChannelPerceptualHash *arg2 = (MagickCore::ChannelPerceptualHash *) 0 ;
  int val1 ;
  int ecode1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::ChannelPerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelPerceptualHash__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ChannelPerceptualHash" "', argument " "1"" of type '" "Magick::PixelChannel""'");
  } 
  arg1 = static_cast< Magick::PixelChannel >(val1);res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_MagickCore___ChannelPerceptualHash, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_ChannelPerceptualHash" "', argument " "2"" of type '" "MagickCore::ChannelPerceptualHash const *""'"); 
  }
  arg2 = reinterpret_cast< MagickCore::ChannelPerceptualHash * >(argp2);{
    try {
      result = (Magick::ChannelPerceptualHash *)new Magick::ChannelPerceptualHash(arg1,(MagickCore::ChannelPerceptualHash const *)arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_Magick_ChannelPerceptualHash_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ChannelPerceptualHash;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelPerceptualHash__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelPerceptualHash__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelPerceptualHash__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelPerceptualHash__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelPerceptualHash__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelPerceptualHash__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelPerceptualHash__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelPerceptualHash__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ChannelPerceptualHash");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelPerceptualHash_templ<SWIG_OBJ_WRAP>::_Magick_ChannelPerceptualHash_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelStatistics__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ChannelStatistics *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelStatistics__SWIG_0.");
  }
  {
    try {
      result = (Magick::ChannelStatistics *)new Magick::ChannelStatistics();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelStatistics__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ChannelStatistics *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ChannelStatistics *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelStatistics__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__ChannelStatistics,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ChannelStatistics" "', argument " "1"" of type '" "Magick::ChannelStatistics const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ChannelStatistics" "', argument " "1"" of type '" "Magick::ChannelStatistics const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);{
    try {
      result = (Magick::ChannelStatistics *)new Magick::ChannelStatistics((Magick::ChannelStatistics const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::~_Magick_ChannelStatistics_templ() {
  auto arg1 = reinterpret_cast<Magick::ChannelStatistics *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_area(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_area.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_area" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->area();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_channel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::PixelChannel result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_channel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_channel" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::PixelChannel)((Magick::ChannelStatistics const *)arg1)->channel();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_depth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_depth.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_depth" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ChannelStatistics const *)arg1)->depth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_entropy(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_entropy.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_entropy" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->entropy();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_isValid.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_isValid" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::ChannelStatistics const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_kurtosis(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_kurtosis.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_kurtosis" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->kurtosis();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_maxima(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_maxima.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_maxima" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->maxima();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_mean(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_mean.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_mean" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->mean();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_minima(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_minima.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_minima" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->minima();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_skewness(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_skewness.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_skewness" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->skewness();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_standardDeviation(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_standardDeviation.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_standardDeviation" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->standardDeviation();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_sum(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_sum.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_sum" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->sum();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_sumCubed(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_sumCubed.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_sumCubed" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->sumCubed();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_sumFourthPower(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_sumFourthPower.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_sumFourthPower" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->sumFourthPower();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_sumSquared(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_sumSquared.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_sumSquared" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->sumSquared();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ChannelStatistics_variance(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ChannelStatistics *arg1 = (Magick::ChannelStatistics *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ChannelStatistics_variance.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ChannelStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ChannelStatistics_variance" "', argument " "1"" of type '" "Magick::ChannelStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ChannelStatistics * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::ChannelStatistics const *)arg1)->variance();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ChannelStatistics__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::PixelChannel arg1 ;
  MagickCore::ChannelStatistics *arg2 = (MagickCore::ChannelStatistics *) 0 ;
  int val1 ;
  int ecode1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::ChannelStatistics *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ChannelStatistics__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_ChannelStatistics" "', argument " "1"" of type '" "Magick::PixelChannel""'");
  } 
  arg1 = static_cast< Magick::PixelChannel >(val1);res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_MagickCore___ChannelStatistics, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_ChannelStatistics" "', argument " "2"" of type '" "MagickCore::ChannelStatistics const *""'"); 
  }
  arg2 = reinterpret_cast< MagickCore::ChannelStatistics * >(argp2);{
    try {
      result = (Magick::ChannelStatistics *)new Magick::ChannelStatistics(arg1,(MagickCore::ChannelStatistics const *)arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_Magick_ChannelStatistics_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ChannelStatistics;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelStatistics__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelStatistics__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelStatistics__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelStatistics__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ChannelStatistics__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ChannelStatistics__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ChannelStatistics");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ChannelStatistics_templ<SWIG_OBJ_WRAP>::_Magick_ChannelStatistics_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageMoments_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImageMoments__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ImageMoments *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImageMoments__SWIG_0.");
  }
  {
    try {
      result = (Magick::ImageMoments *)new Magick::ImageMoments();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageMoments_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImageMoments__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ImageMoments *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ImageMoments *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImageMoments__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__ImageMoments,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ImageMoments" "', argument " "1"" of type '" "Magick::ImageMoments const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ImageMoments" "', argument " "1"" of type '" "Magick::ImageMoments const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::ImageMoments * >(argp1);{
    try {
      result = (Magick::ImageMoments *)new Magick::ImageMoments((Magick::ImageMoments const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ImageMoments_templ<SWIG_OBJ_WRAP>::~_Magick_ImageMoments_templ() {
  auto arg1 = reinterpret_cast<Magick::ImageMoments *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageMoments_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ImageMoments_channel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ImageMoments *arg1 = (Magick::ImageMoments *) 0 ;
  Magick::PixelChannel arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ChannelMoments result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ImageMoments_channel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ImageMoments, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ImageMoments_channel" "', argument " "1"" of type '" "Magick::ImageMoments const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ImageMoments * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ImageMoments_channel" "', argument " "2"" of type '" "Magick::PixelChannel""'");
    } 
    arg2 = static_cast< Magick::PixelChannel >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ImageMoments const *)arg1)->channel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::ChannelMoments(result)), SWIGTYPE_p_Magick__ChannelMoments, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageMoments_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImageMoments__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ImageMoments *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImageMoments__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ImageMoments" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ImageMoments" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::ImageMoments *)new Magick::ImageMoments((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ImageMoments_templ<SWIG_OBJ_WRAP>::_Magick_ImageMoments_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ImageMoments;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImageMoments__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImageMoments__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImageMoments__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImageMoments__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImageMoments__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImageMoments__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ImageMoments");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ImageMoments_templ<SWIG_OBJ_WRAP>::_Magick_ImageMoments_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImagePerceptualHash__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ImagePerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImagePerceptualHash__SWIG_0.");
  }
  {
    try {
      result = (Magick::ImagePerceptualHash *)new Magick::ImagePerceptualHash();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImagePerceptualHash__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ImagePerceptualHash *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ImagePerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImagePerceptualHash__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__ImagePerceptualHash,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ImagePerceptualHash" "', argument " "1"" of type '" "Magick::ImagePerceptualHash const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ImagePerceptualHash" "', argument " "1"" of type '" "Magick::ImagePerceptualHash const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::ImagePerceptualHash * >(argp1);{
    try {
      result = (Magick::ImagePerceptualHash *)new Magick::ImagePerceptualHash((Magick::ImagePerceptualHash const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImagePerceptualHash__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::ImagePerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImagePerceptualHash__SWIG_2.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ImagePerceptualHash" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ImagePerceptualHash" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::ImagePerceptualHash *)new Magick::ImagePerceptualHash((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::~_Magick_ImagePerceptualHash_templ() {
  auto arg1 = reinterpret_cast<Magick::ImagePerceptualHash *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ImagePerceptualHash_toString(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ImagePerceptualHash *arg1 = (Magick::ImagePerceptualHash *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ImagePerceptualHash_toString.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ImagePerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ImagePerceptualHash_toString" "', argument " "1"" of type '" "Magick::ImagePerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ImagePerceptualHash * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ImagePerceptualHash const *)arg1)->operator std::string();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ImagePerceptualHash_channel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ImagePerceptualHash *arg1 = (Magick::ImagePerceptualHash *) 0 ;
  Magick::PixelChannel arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ChannelPerceptualHash result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ImagePerceptualHash_channel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ImagePerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ImagePerceptualHash_channel" "', argument " "1"" of type '" "Magick::ImagePerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ImagePerceptualHash * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ImagePerceptualHash_channel" "', argument " "2"" of type '" "Magick::PixelChannel""'");
    } 
    arg2 = static_cast< Magick::PixelChannel >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ImagePerceptualHash const *)arg1)->channel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::ChannelPerceptualHash(result)), SWIGTYPE_p_Magick__ChannelPerceptualHash, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ImagePerceptualHash_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ImagePerceptualHash *arg1 = (Magick::ImagePerceptualHash *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ImagePerceptualHash_isValid.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ImagePerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ImagePerceptualHash_isValid" "', argument " "1"" of type '" "Magick::ImagePerceptualHash const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ImagePerceptualHash * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::ImagePerceptualHash const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ImagePerceptualHash_sumSquaredDifferences(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ImagePerceptualHash *arg1 = (Magick::ImagePerceptualHash *) 0 ;
  Magick::ImagePerceptualHash *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ImagePerceptualHash_sumSquaredDifferences.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ImagePerceptualHash, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ImagePerceptualHash_sumSquaredDifferences" "', argument " "1"" of type '" "Magick::ImagePerceptualHash *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ImagePerceptualHash * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__ImagePerceptualHash,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_ImagePerceptualHash_sumSquaredDifferences" "', argument " "2"" of type '" "Magick::ImagePerceptualHash const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ImagePerceptualHash_sumSquaredDifferences" "', argument " "2"" of type '" "Magick::ImagePerceptualHash const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::ImagePerceptualHash * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)(arg1)->sumSquaredDifferences((Magick::ImagePerceptualHash const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImagePerceptualHash__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ImagePerceptualHash *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImagePerceptualHash__SWIG_3.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ImagePerceptualHash" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ImagePerceptualHash" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::ImagePerceptualHash *)new Magick::ImagePerceptualHash((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_Magick_ImagePerceptualHash_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ImagePerceptualHash;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImagePerceptualHash__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImagePerceptualHash__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImagePerceptualHash__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImagePerceptualHash__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImagePerceptualHash__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImagePerceptualHash__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImagePerceptualHash__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImagePerceptualHash__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ImagePerceptualHash");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ImagePerceptualHash_templ<SWIG_OBJ_WRAP>::_Magick_ImagePerceptualHash_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageStatistics_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImageStatistics__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ImageStatistics *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImageStatistics__SWIG_0.");
  }
  {
    try {
      result = (Magick::ImageStatistics *)new Magick::ImageStatistics();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageStatistics_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImageStatistics__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ImageStatistics *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ImageStatistics *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImageStatistics__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__ImageStatistics,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ImageStatistics" "', argument " "1"" of type '" "Magick::ImageStatistics const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ImageStatistics" "', argument " "1"" of type '" "Magick::ImageStatistics const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::ImageStatistics * >(argp1);{
    try {
      result = (Magick::ImageStatistics *)new Magick::ImageStatistics((Magick::ImageStatistics const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ImageStatistics_templ<SWIG_OBJ_WRAP>::~_Magick_ImageStatistics_templ() {
  auto arg1 = reinterpret_cast<Magick::ImageStatistics *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageStatistics_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ImageStatistics_channel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ImageStatistics *arg1 = (Magick::ImageStatistics *) 0 ;
  Magick::PixelChannel arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ChannelStatistics result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ImageStatistics_channel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ImageStatistics, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ImageStatistics_channel" "', argument " "1"" of type '" "Magick::ImageStatistics const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ImageStatistics * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ImageStatistics_channel" "', argument " "2"" of type '" "Magick::PixelChannel""'");
    } 
    arg2 = static_cast< Magick::PixelChannel >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ImageStatistics const *)arg1)->channel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::ChannelStatistics(result)), SWIGTYPE_p_Magick__ChannelStatistics, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ImageStatistics_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ImageStatistics__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ImageStatistics *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ImageStatistics__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ImageStatistics" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ImageStatistics" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::ImageStatistics *)new Magick::ImageStatistics((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ImageStatistics_templ<SWIG_OBJ_WRAP>::_Magick_ImageStatistics_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ImageStatistics;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImageStatistics__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImageStatistics__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImageStatistics__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImageStatistics__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ImageStatistics__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ImageStatistics__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ImageStatistics");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ImageStatistics_templ<SWIG_OBJ_WRAP>::_Magick_ImageStatistics_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_Magick_TypeMetric_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__TypeMetric;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::TypeMetric *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_TypeMetric.");
  }
  {
    try {
      result = (Magick::TypeMetric *)new Magick::TypeMetric();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_Magick_TypeMetric_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::~_Magick_TypeMetric_templ() {
  auto arg1 = reinterpret_cast<Magick::TypeMetric *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_ascent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_ascent.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_ascent" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::TypeMetric const *)arg1)->ascent();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_bounds(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_bounds.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_bounds" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::TypeMetric const *)arg1)->bounds();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_descent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_descent.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_descent" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::TypeMetric const *)arg1)->descent();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_maxHorizontalAdvance(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_maxHorizontalAdvance.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_maxHorizontalAdvance" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::TypeMetric const *)arg1)->maxHorizontalAdvance();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_origin(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Coordinate result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_origin.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_origin" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::TypeMetric const *)arg1)->origin();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Coordinate(result)), SWIGTYPE_p_Magick__Coordinate, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_pixelsPerEm(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Coordinate result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_pixelsPerEm.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_pixelsPerEm" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::TypeMetric const *)arg1)->pixelsPerEm();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Coordinate(result)), SWIGTYPE_p_Magick__Coordinate, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_textHeight(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_textHeight.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_textHeight" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::TypeMetric const *)arg1)->textHeight();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_textWidth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_textWidth.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_textWidth" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::TypeMetric const *)arg1)->textWidth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_underlinePosition(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_underlinePosition.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_underlinePosition" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::TypeMetric const *)arg1)->underlinePosition();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_TypeMetric_templ<SWIG_OBJ_WRAP>::_wrap_Magick_TypeMetric_underlineThickness(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::TypeMetric *arg1 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_TypeMetric_underlineThickness.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_TypeMetric_underlineThickness" "', argument " "1"" of type '" "Magick::TypeMetric const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::TypeMetric * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::TypeMetric const *)arg1)->underlineThickness();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_setter
void _wrap_borderGeometryDefault_set(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value value = info.Length() > 0 ? info[0] : Napi::Value();
  Napi::Value jsresult;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_AsCharPtrAndSize(value, &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "borderGeometryDefault_set" "', argument " "1"" of type '" "char const *""'");
    }
    arg1 = reinterpret_cast< char * >(buf1);
    
    // js_lock
    SWIG_guard.lock();
    
    if (arg1) {
      size_t size = strlen(arg1) + 1;
      Magick::borderGeometryDefault = (char const *)reinterpret_cast< char* >(memcpy(new char[size], arg1, sizeof(char)*(size)));
    } else {
      Magick::borderGeometryDefault = 0;
    }
    
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    return;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
#endif
  return;
}


// js_global_getter
Napi::Value _wrap_borderGeometryDefault_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    result = (char *)Magick::borderGeometryDefault;
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_setter
void _wrap_frameGeometryDefault_set(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value value = info.Length() > 0 ? info[0] : Napi::Value();
  Napi::Value jsresult;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_AsCharPtrAndSize(value, &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frameGeometryDefault_set" "', argument " "1"" of type '" "char const *""'");
    }
    arg1 = reinterpret_cast< char * >(buf1);
    
    // js_lock
    SWIG_guard.lock();
    
    if (arg1) {
      size_t size = strlen(arg1) + 1;
      Magick::frameGeometryDefault = (char const *)reinterpret_cast< char* >(memcpy(new char[size], arg1, sizeof(char)*(size)));
    } else {
      Magick::frameGeometryDefault = 0;
    }
    
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    return;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
#endif
  return;
}


// js_global_getter
Napi::Value _wrap_frameGeometryDefault_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    result = (char *)Magick::frameGeometryDefault;
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_setter
void _wrap_raiseGeometryDefault_set(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value value = info.Length() > 0 ? info[0] : Napi::Value();
  Napi::Value jsresult;
  char *arg1 = (char *) 0 ;
  int res1 ;
  char *buf1 = 0 ;
  int alloc1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_AsCharPtrAndSize(value, &buf1, NULL, &alloc1);
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "raiseGeometryDefault_set" "', argument " "1"" of type '" "char const *""'");
    }
    arg1 = reinterpret_cast< char * >(buf1);
    
    // js_lock
    SWIG_guard.lock();
    
    if (arg1) {
      size_t size = strlen(arg1) + 1;
      Magick::raiseGeometryDefault = (char const *)reinterpret_cast< char* >(memcpy(new char[size], arg1, sizeof(char)*(size)));
    } else {
      Magick::raiseGeometryDefault = 0;
    }
    
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    return;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
  
#endif
  return;
}


// js_global_getter
Napi::Value _wrap_raiseGeometryDefault_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  char *result = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    result = (char *)Magick::raiseGeometryDefault;
    
    jsresult = SWIG_FromCharPtr((const char *)result);
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_global_overloaded_function
Napi::Value _wrap_equal__SWIG_8(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "equal" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "equal" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "equal" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator ==((Magick::Image const &)*arg1,(Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_equal(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_equal__SWIG_8(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_equal__SWIG_8(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function equal.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_notEqual__SWIG_8(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "notEqual" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator !=((Magick::Image const &)*arg1,(Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_notEqual(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_notEqual__SWIG_8(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_notEqual__SWIG_8(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function notEqual.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gt__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gt" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gt" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gt" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >((Magick::Image const &)*arg1,(Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_gt(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gt__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gt__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gt__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gt__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gt__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gt__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gt__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gt__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gt__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gt__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gt__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gt__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gt__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gt__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gt.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lt__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lt" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lt" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lt" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <((Magick::Image const &)*arg1,(Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_lt(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lt__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lt__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lt__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lt__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lt__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lt__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lt__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lt__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lt__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lt__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lt__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lt__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lt__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lt__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function lt.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_gte__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "gte" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "gte" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "gte" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator >=((Magick::Image const &)*arg1,(Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_gte(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gte__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gte__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gte__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gte__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gte__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gte__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gte__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gte__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gte__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gte__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gte__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gte__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_gte__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_gte__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gte.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_lte__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  int result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lte" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp1) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "1"" of type '" "Magick::Image const &""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "lte" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "lte" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (int)Magick::operator <=((Magick::Image const &)*arg1,(Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_lte(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lte__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lte__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lte__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lte__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lte__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lte__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lte__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lte__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lte__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lte__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lte__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lte__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_lte__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_lte__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function lte.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_0.");
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Blob *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Blob,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Blob const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Blob *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Blob,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
    }
    
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Blob const &)*arg1,(Magick::Geometry const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Blob *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  size_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_3.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Blob,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
    }
    
  }
  ecode3 = SWIG_AsVal_unsigned_SS_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_Image" "', argument " "3"" of type '" "size_t""'");
  } 
  arg3 = static_cast< size_t >(val3);{
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Blob const &)*arg1,(Magick::Geometry const &)*arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Blob *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  size_t arg3 ;
  std::string *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  int res4 = SWIG_OLDOBJ ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_4.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Blob,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
    }
    
  }
  ecode3 = SWIG_AsVal_unsigned_SS_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_Image" "', argument " "3"" of type '" "size_t""'");
  } 
  arg3 = static_cast< size_t >(val3);{
    {
      std::string *ptr = (std::string *)0;
      res4 = SWIG_AsPtr_std_string(info[3], &ptr);
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_Image" "', argument " "4"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "4"" of type '" "std::string const &""'"); 
      }
      arg4 = ptr;
    }
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Blob const &)*arg1,(Magick::Geometry const &)*arg2,arg3,(std::string const &)*arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res4)) delete arg4;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Blob *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_5.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Blob,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Blob const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Blob * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
    }
    
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res3 = SWIG_AsPtr_std_string(info[2], &ptr);
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_Image" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      arg3 = ptr;
    }
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Blob const &)*arg1,(Magick::Geometry const &)*arg2,(std::string const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res3)) delete arg3;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::Color from_string_temp2 ;
  int res11 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res12 = 0 ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_6.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res11 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Color(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res12 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res12)) {
        SWIG_exception_fail(SWIG_ArgError(res12), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp10);;
    }
    
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Geometry const &)*arg1,(Magick::Color const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_7.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_8(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_8.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
    }
    
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image((Magick::Image const &)*arg1,(Magick::Geometry const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_9(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  std::string *arg3 = 0 ;
  Magick::StorageType arg4 ;
  void *arg5 = (void *) 0 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  Napi::TypedArray _global_typed_array ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_9.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_Image" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);{
    {
      std::string *ptr = (std::string *)0;
      res3 = SWIG_AsPtr_std_string(info[2], &ptr);
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_Image" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "3"" of type '" "std::string const &""'"); 
      }
      arg3 = ptr;
    }
  }
  {
    {
      if (info[3].IsTypedArray()) {
        _global_typed_array = info[3].As<Napi::TypedArray>();
        arg4 = GetMagickStorageType(env, _global_typed_array);
        arg5 = reinterpret_cast<void*>(
          reinterpret_cast<uint8_t *>(_global_typed_array.ArrayBuffer().Data()) + _global_typed_array.ByteOffset());
      } else {
        SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_Image', argument 4 is not a TypedArray");
      }
    }
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image(arg1,arg2,(std::string const &)*arg3,arg4,(void const *)arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res3)) delete arg3;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_Image__SWIG_10(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Image *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Image__SWIG_10.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_Image" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::Image *)new Magick::Image((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_Image_templ<SWIG_OBJ_WRAP>::_Magick_Image_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__Image;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_8(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_8(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_9(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_9(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_Image__SWIG_10(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_Image__SWIG_10(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_Image");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Image_templ<SWIG_OBJ_WRAP>::_Magick_Image_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Image_templ<SWIG_OBJ_WRAP>::~_Magick_Image_templ() {
  auto arg1 = reinterpret_cast<Magick::Image *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clone" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_clone" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_clone" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Image *) &(arg1)->operator =((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Image, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adjoinAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adjoin(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adjoin" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adjoin" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adjoinAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adjoin__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adjoin" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adjoin" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adjoin(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adjoinAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->adjoin();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adjoin" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adjoinAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adjoinAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adjoinAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adjoinAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adjoinAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adjoinAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adjoinAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adjoinAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adjoin__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adjoin" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->adjoin();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adjoin(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adjoin__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adjoin__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adjoin__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adjoin__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adjoin.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alphaAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->alpha(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_alpha" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_alphaAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alpha__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_alpha" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->alpha(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alphaAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->alpha();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alpha" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_alphaAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alpha__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alpha" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->alpha();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_matteColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->matteColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_matteColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_matteColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_matteColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_matteColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->matteColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_matteColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->matteColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_matteColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_matteColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_matteColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_matteColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_matteColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_matteColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_matteColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_matteColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function matteColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_matteColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_matteColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->matteColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_matteColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_matteColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_matteColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_matteColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_matteColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function matteColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationDelayAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->animationDelay(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationDelay" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_animationDelay" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_animationDelayAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationDelay__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationDelay" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_animationDelay" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->animationDelay(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationDelayAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->animationDelay();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationDelay" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_animationDelayAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_animationDelayAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_animationDelayAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationDelayAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationDelayAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationDelayAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationDelayAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function animationDelayAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationDelay__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationDelay" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->animationDelay();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_animationDelay(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationDelay__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationDelay__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationDelay__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationDelay__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function animationDelay.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationIterationsAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->animationIterations(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationIterations" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_animationIterations" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_animationIterationsAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationIterations__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationIterations" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_animationIterations" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->animationIterations(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationIterationsAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->animationIterations();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationIterations" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_animationIterationsAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_animationIterationsAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_animationIterationsAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationIterationsAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationIterationsAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationIterationsAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationIterationsAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function animationIterationsAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_animationIterations__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_animationIterations" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->animationIterations();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_animationIterations(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationIterations__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationIterations__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_animationIterations__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_animationIterations__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function animationIterations.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Color from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->backgroundColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Color(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_backgroundColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->backgroundColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->backgroundColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_backgroundColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_backgroundColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_backgroundColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function backgroundColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->backgroundColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_backgroundColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function backgroundColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundTextureAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->backgroundTexture((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_backgroundTexture" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_backgroundTexture" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_backgroundTextureAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundTexture__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_backgroundTexture" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_backgroundTexture" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->backgroundTexture((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundTextureAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->backgroundTexture();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundTexture" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_backgroundTextureAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_backgroundTextureAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_backgroundTextureAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundTextureAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundTextureAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundTextureAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundTextureAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function backgroundTextureAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_backgroundTexture__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_backgroundTexture" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->backgroundTexture();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_backgroundTexture(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundTexture__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundTexture__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_backgroundTexture__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_backgroundTexture__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function backgroundTexture.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_baseColumnsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_baseColumnsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_baseColumnsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->baseColumns();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_baseColumns" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_baseColumnsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_baseColumnsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_baseColumnsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_baseColumnsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_baseColumns(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_baseColumns.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_baseColumns" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->baseColumns();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_baseFilenameAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_baseFilenameAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_baseFilenameAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->baseFilename();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_baseFilename" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_baseFilenameAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_baseFilenameAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_baseFilenameAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_baseFilenameAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_baseFilename(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_baseFilename.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_baseFilename" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->baseFilename();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_baseRowsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_baseRowsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_baseRowsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->baseRows();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_baseRows" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_baseRowsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_baseRowsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_baseRowsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_baseRowsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_baseRows(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_baseRows.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_baseRows" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->baseRows();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackPointCompensationAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blackPointCompensation(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackPointCompensation" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blackPointCompensation" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blackPointCompensationAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackPointCompensation__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackPointCompensation" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blackPointCompensation" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blackPointCompensation(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackPointCompensationAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->blackPointCompensation();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackPointCompensation" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blackPointCompensationAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blackPointCompensationAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blackPointCompensationAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blackPointCompensationAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blackPointCompensationAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blackPointCompensationAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blackPointCompensationAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blackPointCompensationAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackPointCompensation__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackPointCompensation" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->blackPointCompensation();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blackPointCompensation(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blackPointCompensation__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blackPointCompensation__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blackPointCompensation__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blackPointCompensation__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blackPointCompensation.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_borderColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Color from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->borderColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Color(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_borderColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_borderColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->borderColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_borderColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->borderColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_borderColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_borderColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_borderColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_borderColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_borderColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_borderColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_borderColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function borderColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_borderColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_borderColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->borderColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_borderColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_borderColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_borderColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_borderColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_borderColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function borderColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_boundingBoxAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_boundingBoxAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_Image__wrap_Magick_Image_boundingBoxAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->boundingBox();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_boundingBox" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_boundingBoxAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_boundingBoxAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_boundingBoxAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_boundingBoxAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_boundingBox(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_boundingBox.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_boundingBox" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->boundingBox();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_boxColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->boxColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_boxColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_boxColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_boxColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_boxColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_boxColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_boxColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_boxColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_boxColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->boxColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_boxColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->boxColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_boxColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_boxColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_boxColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_boxColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_boxColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_boxColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_boxColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_boxColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function boxColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_boxColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_boxColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->boxColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_boxColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_boxColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_boxColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_boxColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_boxColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function boxColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channelDepthAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    size_t arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->channelDepth(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channelDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_channelDepth" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_channelDepth" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_channelDepthAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channelDepth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  size_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channelDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_channelDepth" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_channelDepth" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->channelDepth(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channelDepthAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (arg1)->channelDepth(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channelDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_channelDepth" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_channelDepthAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_channelDepthAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_channelDepthAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_channelDepthAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_channelDepthAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_channelDepthAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_channelDepthAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function channelDepthAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channelDepth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channelDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_channelDepth" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (arg1)->channelDepth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_channelDepth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_channelDepth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_channelDepth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_channelDepth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_channelDepth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function channelDepth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_channelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_channelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->channels();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channels" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_channelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_channelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_channelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_channelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_channels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channels" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->channels();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_classTypeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ClassType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->classType(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_classType" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_classType" "', argument " "2"" of type '" "Magick::ClassType""'");
      } 
      arg2 = static_cast< Magick::ClassType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_classTypeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_classType__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ClassType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_classType" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_classType" "', argument " "2"" of type '" "Magick::ClassType""'");
    } 
    arg2 = static_cast< Magick::ClassType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->classType(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_classTypeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ClassType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::ClassType)((Magick::Image const *)arg1)->classType();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_classType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_classTypeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_classTypeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_classTypeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_classTypeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_classTypeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_classTypeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_classTypeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function classTypeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_classType__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ClassType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_classType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ClassType)((Magick::Image const *)arg1)->classType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_classType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_classType__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_classType__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_classType__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_classType__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function classType.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorFuzzAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorFuzz(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorFuzz" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorFuzz" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorFuzzAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorFuzz__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorFuzz" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorFuzz" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorFuzz(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorFuzzAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->colorFuzz();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorFuzz" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorFuzzAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorFuzzAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorFuzzAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorFuzzAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorFuzzAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorFuzzAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorFuzzAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorFuzzAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorFuzz__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorFuzz" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->colorFuzz();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorFuzz(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorFuzz__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorFuzz__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorFuzz__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorFuzz__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorFuzz.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMapSizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorMapSize(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMapSize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMapSize" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorMapSizeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMapSize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMapSize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMapSize" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorMapSize(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMapSizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->colorMapSize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMapSize" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorMapSizeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorMapSizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorMapSizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMapSizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMapSizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMapSizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMapSizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorMapSizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMapSize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMapSize" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->colorMapSize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorMapSize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMapSize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMapSize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMapSize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMapSize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorMapSize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpaceAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ColorspaceType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorSpace(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpace" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorSpace" "', argument " "2"" of type '" "Magick::ColorspaceType""'");
      } 
      arg2 = static_cast< Magick::ColorspaceType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorSpaceAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpace__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ColorspaceType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpace" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorSpace" "', argument " "2"" of type '" "Magick::ColorspaceType""'");
    } 
    arg2 = static_cast< Magick::ColorspaceType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorSpace(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpaceAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ColorspaceType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::ColorspaceType)((Magick::Image const *)arg1)->colorSpace();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpace" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorSpaceAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorSpaceAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorSpaceAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpaceAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpaceAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpaceAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpaceAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorSpaceAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpace__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorspaceType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpace" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorspaceType)((Magick::Image const *)arg1)->colorSpace();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorSpace(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpace__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpace__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpace__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpace__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorSpace.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ColorspaceType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorSpaceType(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpaceType" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorSpaceType" "', argument " "2"" of type '" "Magick::ColorspaceType""'");
      } 
      arg2 = static_cast< Magick::ColorspaceType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpaceType__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ColorspaceType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpaceType" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorSpaceType" "', argument " "2"" of type '" "Magick::ColorspaceType""'");
    } 
    arg2 = static_cast< Magick::ColorspaceType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorSpaceType(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ColorspaceType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::ColorspaceType)((Magick::Image const *)arg1)->colorSpaceType();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpaceType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorSpaceTypeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpaceTypeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorSpaceTypeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorSpaceType__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorspaceType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorSpaceType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorspaceType)((Magick::Image const *)arg1)->colorSpaceType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorSpaceType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpaceType__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpaceType__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorSpaceType__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorSpaceType__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorSpaceType.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_columnsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_columnsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_columnsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->columns();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_columns" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_columnsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_columnsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_columnsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_columnsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_columns(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_columns.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_columns" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->columns();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_commentAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->comment((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_comment" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_comment" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_comment" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_commentAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_commentAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_comment__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_comment" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_comment" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_comment" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->comment((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_commentAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->comment();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_comment" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_commentAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_commentAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_commentAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_commentAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_commentAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_commentAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_commentAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_commentAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function commentAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_comment__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_comment" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->comment();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_comment(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_comment__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_comment__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_comment__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_comment__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function comment.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::CompositeOperator arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->compose(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compose" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compose" "', argument " "2"" of type '" "Magick::CompositeOperator""'");
      } 
      arg2 = static_cast< Magick::CompositeOperator >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_composeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_composeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compose__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::CompositeOperator arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compose" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compose" "', argument " "2"" of type '" "Magick::CompositeOperator""'");
    } 
    arg2 = static_cast< Magick::CompositeOperator >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->compose(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::CompositeOperator result;
    
  public:
    _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::CompositeOperator)((Magick::Image const *)arg1)->compose();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compose" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_composeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_composeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_composeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_composeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function composeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compose__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::CompositeOperator result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compose" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::CompositeOperator)((Magick::Image const *)arg1)->compose();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compose(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compose__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compose__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compose__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compose__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compose.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compressTypeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::CompressionType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->compressType(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compressType" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compressType" "', argument " "2"" of type '" "Magick::CompressionType""'");
      } 
      arg2 = static_cast< Magick::CompressionType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compressTypeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compressType__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::CompressionType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compressType" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compressType" "', argument " "2"" of type '" "Magick::CompressionType""'");
    } 
    arg2 = static_cast< Magick::CompressionType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->compressType(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compressTypeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::CompressionType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::CompressionType)((Magick::Image const *)arg1)->compressType();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compressType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compressTypeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compressTypeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compressTypeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compressTypeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compressTypeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compressTypeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compressTypeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compressTypeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compressType__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::CompressionType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compressType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::CompressionType)((Magick::Image const *)arg1)->compressType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compressType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compressType__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compressType__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compressType__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compressType__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compressType.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_debugAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->debug(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_debug" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_debug" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_debugAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_debugAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_debug__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_debug" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_debug" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->debug(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_debugAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->debug();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_debug" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_debugAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_debugAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_debugAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_debugAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_debugAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_debugAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_debugAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_debugAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function debugAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_debug__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_debug" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->debug();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_debug(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_debug__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_debug__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_debug__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_debug__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function debug.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_densityAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Point *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->density((Magick::Point const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_density" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Point,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_density" "', argument " "2"" of type '" "Magick::Point const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_density" "', argument " "2"" of type '" "Magick::Point const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Point * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_densityAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_densityAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_density__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Point *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_density" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Point,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_density" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_density" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Point * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->density((Magick::Point const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_densityAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Point result;
    
  public:
    _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->density();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Point(result)), SWIGTYPE_p_Magick__Point, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_density" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_densityAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_densityAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_densityAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_densityAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_densityAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_densityAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_densityAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_densityAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function densityAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_density__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Point result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_density" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->density();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Point(result)), SWIGTYPE_p_Magick__Point, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_density(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_density__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_density__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_density__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_density__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function density.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_depthAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->depth(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_depth" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_depth" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_depthAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_depthAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_depth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_depth" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_depth" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->depth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_depthAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->depth();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_depth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_depthAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_depthAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_depthAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_depthAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_depthAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_depthAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_depthAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_depthAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function depthAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_depth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_depth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->depth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_depth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_depth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_depth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_depth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_depth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function depth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_directoryAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_directoryAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_directoryAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->directory();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_directory" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_directoryAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_directoryAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_directoryAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_directoryAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_directory(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_directory.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_directory" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->directory();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_endianAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::EndianType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->endian(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_endian" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_endian" "', argument " "2"" of type '" "Magick::EndianType""'");
      } 
      arg2 = static_cast< Magick::EndianType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_endianAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_endianAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_endian__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::EndianType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_endian" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_endian" "', argument " "2"" of type '" "Magick::EndianType""'");
    } 
    arg2 = static_cast< Magick::EndianType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->endian(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_endianAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::EndianType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::EndianType)((Magick::Image const *)arg1)->endian();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_endian" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_endianAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_endianAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_endianAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_endianAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_endianAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_endianAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_endianAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_endianAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function endianAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_endian__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::EndianType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_endian" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::EndianType)((Magick::Image const *)arg1)->endian();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_endian(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_endian__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_endian__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_endian__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_endian__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function endian.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_exifProfileAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->exifProfile((Magick::Blob const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_exifProfile" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_exifProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_exifProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_exifProfileAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_exifProfile__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_exifProfile" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_exifProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_exifProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->exifProfile((Magick::Blob const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_exifProfileAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Blob result;
    
  public:
    _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->exifProfile();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_exifProfile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_exifProfileAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_exifProfileAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_exifProfileAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_exifProfileAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_exifProfileAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_exifProfileAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_exifProfileAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function exifProfileAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_exifProfile__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Blob result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_exifProfile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->exifProfile();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_exifProfile(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_exifProfile__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_exifProfile__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_exifProfile__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_exifProfile__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function exifProfile.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fileNameAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fileName((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fileName" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fileNameAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fileName__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fileName" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fileName((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fileNameAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->fileName();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fileName" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fileNameAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fileNameAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fileNameAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fileNameAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fileNameAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fileNameAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fileNameAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fileNameAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fileName__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fileName" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->fileName();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fileName(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fileName__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fileName__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fileName__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fileName__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fileName.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fileSizeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fileSizeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::MagickSizeType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fileSizeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::MagickSizeType)((Magick::Image const *)arg1)->fileSize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fileSize" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fileSizeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fileSizeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fileSizeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fileSizeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fileSize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fileSize.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fileSize" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)((Magick::Image const *)arg1)->fileSize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Color from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fillColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Color(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fillColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fillColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->fillColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fillColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fillColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fillColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->fillColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fillColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillRuleAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::FillRule *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 ;
    Magick::FillRule temp2 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fillRule((Magick::FillRule const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillRule" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int (info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fillRule" "', argument " "2"" of type '" "Magick::FillRule const &""'");
      } else {
        temp2 = static_cast< Magick::FillRule >(val2);
        arg2 = &temp2;
      }
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fillRuleAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillRule__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::FillRule *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 ;
  Magick::FillRule temp2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillRule" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int (info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fillRule" "', argument " "2"" of type '" "Magick::FillRule const &""'");
    } else {
      temp2 = static_cast< Magick::FillRule >(val2);
      arg2 = &temp2;
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fillRule((Magick::FillRule const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillRuleAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::FillRule result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::FillRule)((Magick::Image const *)arg1)->fillRule();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillRule" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fillRuleAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fillRuleAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fillRuleAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillRuleAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillRuleAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillRuleAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillRuleAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillRuleAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillRule__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::FillRule result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillRule" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::FillRule)((Magick::Image const *)arg1)->fillRule();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fillRule(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillRule__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillRule__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillRule__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillRule__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillRule.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillPatternAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fillPattern((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillPattern" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fillPattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fillPattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fillPatternAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillPattern__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillPattern" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fillPattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fillPattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fillPattern((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillPatternAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->fillPattern();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillPattern" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fillPatternAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fillPatternAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fillPatternAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillPatternAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillPatternAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillPatternAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillPatternAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillPatternAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fillPattern__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fillPattern" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->fillPattern();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fillPattern(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillPattern__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillPattern__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fillPattern__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fillPattern__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillPattern.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_filterTypeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::FilterType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->filterType(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_filterType" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_filterType" "', argument " "2"" of type '" "Magick::FilterType""'");
      } 
      arg2 = static_cast< Magick::FilterType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_filterTypeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_filterType__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::FilterType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_filterType" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_filterType" "', argument " "2"" of type '" "Magick::FilterType""'");
    } 
    arg2 = static_cast< Magick::FilterType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->filterType(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_filterTypeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::FilterType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::FilterType)((Magick::Image const *)arg1)->filterType();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_filterType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_filterTypeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_filterTypeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_filterTypeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_filterTypeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_filterTypeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_filterTypeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_filterTypeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function filterTypeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_filterType__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::FilterType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_filterType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::FilterType)((Magick::Image const *)arg1)->filterType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_filterType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_filterType__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_filterType__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_filterType__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_filterType__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function filterType.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->font((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_font" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_font" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_font" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_font__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_font" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_font" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_font" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->font((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->font();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_font" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_font__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_font" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->font();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_font(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_font__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_font__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_font__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_font__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function font.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontFamilyAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fontFamily((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontFamily" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fontFamily" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fontFamily" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontFamilyAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontFamily__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontFamily" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fontFamily" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fontFamily" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fontFamily((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontFamilyAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->fontFamily();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontFamily" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontFamilyAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontFamilyAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontFamilyAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontFamilyAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontFamilyAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontFamilyAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontFamilyAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontFamilyAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontFamily__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontFamily" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->fontFamily();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontFamily(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontFamily__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontFamily__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontFamily__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontFamily__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontFamily.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontPointsizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fontPointsize(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontPointsize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fontPointsize" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontPointsizeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontPointsize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontPointsize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fontPointsize" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fontPointsize(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontPointsizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->fontPointsize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontPointsize" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontPointsizeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontPointsizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontPointsizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontPointsizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontPointsizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontPointsizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontPointsizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontPointsizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontPointsize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontPointsize" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->fontPointsize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontPointsize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontPointsize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontPointsize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontPointsize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontPointsize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontPointsize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontStyleAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::StyleType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fontStyle(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontStyle" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fontStyle" "', argument " "2"" of type '" "Magick::StyleType""'");
      } 
      arg2 = static_cast< Magick::StyleType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontStyleAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontStyle__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::StyleType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontStyle" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fontStyle" "', argument " "2"" of type '" "Magick::StyleType""'");
    } 
    arg2 = static_cast< Magick::StyleType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fontStyle(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontStyleAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::StyleType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::StyleType)((Magick::Image const *)arg1)->fontStyle();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontStyle" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontStyleAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontStyleAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontStyleAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontStyleAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontStyleAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontStyleAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontStyleAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontStyleAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontStyle__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::StyleType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontStyle" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::StyleType)((Magick::Image const *)arg1)->fontStyle();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontStyle(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontStyle__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontStyle__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontStyle__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontStyle__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontStyle.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontWeightAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fontWeight(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontWeight" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fontWeight" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontWeightAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontWeight__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontWeight" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_fontWeight" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fontWeight(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontWeightAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->fontWeight();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontWeight" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontWeightAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontWeightAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontWeightAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontWeightAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontWeightAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontWeightAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontWeightAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontWeightAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontWeight__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontWeight" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->fontWeight();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fontWeight(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontWeight__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontWeight__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fontWeight__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fontWeight__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontWeight.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_formatAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_formatAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_formatAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->format();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_format" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_formatAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_formatAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_formatAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_formatAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_format(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_format.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_format" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->format();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_formatExpressionAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_formatExpressionAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_formatExpressionAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (arg1)->formatExpression(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_formatExpression" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_formatExpression" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_formatExpressionAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_formatExpressionAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_formatExpressionAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_formatExpressionAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_formatExpression(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_formatExpression.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_formatExpression" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_formatExpression" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (arg1)->formatExpression(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gammaAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->gamma();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gamma" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gammaAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gamma__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gamma" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->gamma();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_geometryAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_geometryAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_Image__wrap_Magick_Image_geometryAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->geometry();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_geometry" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_geometryAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_geometryAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_geometryAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_geometryAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_geometry(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_geometry.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_geometry" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->geometry();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::DisposeType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->gifDisposeMethod(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gifDisposeMethod" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gifDisposeMethod" "', argument " "2"" of type '" "Magick::DisposeType""'");
      } 
      arg2 = static_cast< Magick::DisposeType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gifDisposeMethod__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::DisposeType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gifDisposeMethod" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gifDisposeMethod" "', argument " "2"" of type '" "Magick::DisposeType""'");
    } 
    arg2 = static_cast< Magick::DisposeType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->gifDisposeMethod(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::DisposeType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::DisposeType)((Magick::Image const *)arg1)->gifDisposeMethod();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gifDisposeMethod" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_gifDisposeMethodAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gifDisposeMethodAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gifDisposeMethodAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gifDisposeMethod__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DisposeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gifDisposeMethod" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DisposeType)((Magick::Image const *)arg1)->gifDisposeMethod();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_gifDisposeMethod(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gifDisposeMethod__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gifDisposeMethod__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gifDisposeMethod__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gifDisposeMethod__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gifDisposeMethod.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_hasChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_hasChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::PixelChannel arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_hasChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->hasChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_hasChannel" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_hasChannel" "', argument " "2"" of type '" "Magick::PixelChannel""'");
      } 
      arg2 = static_cast< Magick::PixelChannel >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_hasChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_hasChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_hasChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_hasChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_hasChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::PixelChannel arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_hasChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_hasChannel" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_hasChannel" "', argument " "2"" of type '" "Magick::PixelChannel""'");
    } 
    arg2 = static_cast< Magick::PixelChannel >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->hasChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_highlightColorAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_highlightColorAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_highlightColorAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->highlightColor(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_highlightColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_highlightColor" "', argument " "2"" of type '" "Magick::Color const""'"); 
          }  
          if (!argp2) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_highlightColor" "', argument " "2"" of type '" "Magick::Color const""'");
          } else {
            arg2 = *(reinterpret_cast< Magick::Color * >(argp2));
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_highlightColorAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_highlightColorAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_highlightColorAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_highlightColorAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_highlightColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_highlightColor.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_highlightColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_highlightColor" "', argument " "2"" of type '" "Magick::Color const""'"); 
        }  
        if (!argp2) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_highlightColor" "', argument " "2"" of type '" "Magick::Color const""'");
        } else {
          arg2 = *(reinterpret_cast< Magick::Color * >(argp2));
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->highlightColor(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iccColorProfileAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->iccColorProfile((Magick::Blob const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iccColorProfile" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_iccColorProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_iccColorProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_iccColorProfileAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iccColorProfile__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iccColorProfile" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_iccColorProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_iccColorProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->iccColorProfile((Magick::Blob const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iccColorProfileAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Blob result;
    
  public:
    _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->iccColorProfile();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iccColorProfile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_iccColorProfileAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_iccColorProfileAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_iccColorProfileAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iccColorProfileAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iccColorProfileAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iccColorProfileAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iccColorProfileAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function iccColorProfileAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iccColorProfile__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Blob result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iccColorProfile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->iccColorProfile();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_iccColorProfile(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iccColorProfile__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iccColorProfile__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iccColorProfile__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iccColorProfile__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function iccColorProfile.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interlaceTypeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::InterlaceType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->interlaceType(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interlaceType" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_interlaceType" "', argument " "2"" of type '" "Magick::InterlaceType""'");
      } 
      arg2 = static_cast< Magick::InterlaceType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_interlaceTypeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interlaceType__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::InterlaceType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interlaceType" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_interlaceType" "', argument " "2"" of type '" "Magick::InterlaceType""'");
    } 
    arg2 = static_cast< Magick::InterlaceType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->interlaceType(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interlaceTypeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::InterlaceType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::InterlaceType)((Magick::Image const *)arg1)->interlaceType();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interlaceType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_interlaceTypeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_interlaceTypeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_interlaceTypeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interlaceTypeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interlaceTypeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interlaceTypeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interlaceTypeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function interlaceTypeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interlaceType__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::InterlaceType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interlaceType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::InterlaceType)((Magick::Image const *)arg1)->interlaceType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_interlaceType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interlaceType__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interlaceType__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interlaceType__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interlaceType__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function interlaceType.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interpolateAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::PixelInterpolateMethod arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->interpolate(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interpolate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_interpolate" "', argument " "2"" of type '" "Magick::PixelInterpolateMethod""'");
      } 
      arg2 = static_cast< Magick::PixelInterpolateMethod >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_interpolateAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interpolate__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::PixelInterpolateMethod arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interpolate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_interpolate" "', argument " "2"" of type '" "Magick::PixelInterpolateMethod""'");
    } 
    arg2 = static_cast< Magick::PixelInterpolateMethod >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->interpolate(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interpolateAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::PixelInterpolateMethod result;
    
  public:
    _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::PixelInterpolateMethod)((Magick::Image const *)arg1)->interpolate();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interpolate" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_interpolateAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_interpolateAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_interpolateAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interpolateAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interpolateAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interpolateAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interpolateAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function interpolateAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_interpolate__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::PixelInterpolateMethod result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_interpolate" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::PixelInterpolateMethod)((Magick::Image const *)arg1)->interpolate();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_interpolate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interpolate__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interpolate__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_interpolate__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_interpolate__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function interpolate.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iptcProfileAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->iptcProfile((Magick::Blob const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iptcProfile" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_iptcProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_iptcProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_iptcProfileAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iptcProfile__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iptcProfile" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_iptcProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_iptcProfile" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->iptcProfile((Magick::Blob const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iptcProfileAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Blob result;
    
  public:
    _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->iptcProfile();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iptcProfile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_iptcProfileAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_iptcProfileAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_iptcProfileAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iptcProfileAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iptcProfileAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iptcProfileAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iptcProfileAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function iptcProfileAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_iptcProfile__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Blob result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_iptcProfile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->iptcProfile();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_iptcProfile(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iptcProfile__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iptcProfile__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_iptcProfile__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_iptcProfile__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function iptcProfile.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_isOpaqueAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_isOpaqueAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_isOpaqueAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->isOpaque();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_isOpaque" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_isOpaqueAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_isOpaqueAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_isOpaqueAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_isOpaqueAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_isOpaque(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_isOpaque.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_isOpaque" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->isOpaque();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_isValidAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->isValid(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_isValid" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_isValid" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_isValidAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_isValid__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_isValid" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_isValid" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->isValid(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_isValidAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->isValid();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_isValid" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_isValidAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_isValidAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_isValidAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_isValidAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_isValidAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_isValidAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_isValidAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function isValidAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_isValid__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_isValid" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->isValid();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_isValid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_isValid__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_isValid__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_isValid__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_isValid__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function isValid.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_labelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->label((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_label" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_label" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_label" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_labelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_labelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_label__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_label" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_label" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_label" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->label((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_labelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->label();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_label" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_labelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_labelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_labelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_labelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_labelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_labelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_labelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_labelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function labelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_label__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_label" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->label();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_label(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_label__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_label__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_label__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_label__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function label.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_lowlightColorAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_lowlightColorAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_lowlightColorAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->lowlightColor(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_lowlightColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_lowlightColor" "', argument " "2"" of type '" "Magick::Color const""'"); 
          }  
          if (!argp2) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_lowlightColor" "', argument " "2"" of type '" "Magick::Color const""'");
          } else {
            arg2 = *(reinterpret_cast< Magick::Color * >(argp2));
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_lowlightColorAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_lowlightColorAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_lowlightColorAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_lowlightColorAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_lowlightColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_lowlightColor.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_lowlightColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_lowlightColor" "', argument " "2"" of type '" "Magick::Color const""'"); 
        }  
        if (!argp2) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_lowlightColor" "', argument " "2"" of type '" "Magick::Color const""'");
        } else {
          arg2 = *(reinterpret_cast< Magick::Color * >(argp2));
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->lowlightColor(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_magickAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->magick((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_magick" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_magick" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_magick" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_magickAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_magickAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_magick__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_magick" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_magick" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_magick" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->magick((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_magickAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->magick();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_magick" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_magickAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_magickAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_magickAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_magickAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_magickAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_magickAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_magickAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_magickAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function magickAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_magick__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_magick" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->magick();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_magick(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_magick__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_magick__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_magick__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_magick__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function magick.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_masklightColorAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_masklightColorAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_masklightColorAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->masklightColor(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_masklightColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_masklightColor" "', argument " "2"" of type '" "Magick::Color const""'"); 
          }  
          if (!argp2) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_masklightColor" "', argument " "2"" of type '" "Magick::Color const""'");
          } else {
            arg2 = *(reinterpret_cast< Magick::Color * >(argp2));
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_masklightColorAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_masklightColorAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_masklightColorAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_masklightColorAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_masklightColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_masklightColor.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_masklightColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_masklightColor" "', argument " "2"" of type '" "Magick::Color const""'"); 
        }  
        if (!argp2) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_masklightColor" "', argument " "2"" of type '" "Magick::Color const""'");
        } else {
          arg2 = *(reinterpret_cast< Magick::Color * >(argp2));
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->masklightColor(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_meanErrorPerPixelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_meanErrorPerPixelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_meanErrorPerPixelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->meanErrorPerPixel();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_meanErrorPerPixel" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_meanErrorPerPixelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_meanErrorPerPixelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_meanErrorPerPixelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_meanErrorPerPixelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_meanErrorPerPixel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_meanErrorPerPixel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_meanErrorPerPixel" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->meanErrorPerPixel();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modulusDepthAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->modulusDepth(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modulusDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_modulusDepth" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_modulusDepthAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modulusDepth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modulusDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_modulusDepth" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->modulusDepth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modulusDepthAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->modulusDepth();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modulusDepth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_modulusDepthAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_modulusDepthAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_modulusDepthAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_modulusDepthAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_modulusDepthAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_modulusDepthAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_modulusDepthAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function modulusDepthAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modulusDepth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modulusDepth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->modulusDepth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_modulusDepth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_modulusDepth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_modulusDepth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_modulusDepth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_modulusDepth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function modulusDepth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_monochromeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->monochrome(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_monochrome" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_monochrome" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_monochromeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_monochrome__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_monochrome" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_monochrome" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->monochrome(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_monochromeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->monochrome();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_monochrome" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_monochromeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_monochromeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_monochromeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_monochromeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_monochromeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_monochromeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_monochromeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function monochromeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_monochrome__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_monochrome" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->monochrome();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_monochrome(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_monochrome__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_monochrome__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_monochrome__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_monochrome__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function monochrome.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_montageGeometryAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_montageGeometryAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_Image__wrap_Magick_Image_montageGeometryAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->montageGeometry();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_montageGeometry" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_montageGeometryAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_montageGeometryAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_montageGeometryAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_montageGeometryAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_montageGeometry(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_montageGeometry.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_montageGeometry" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->montageGeometry();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_normalizedMaxErrorAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_normalizedMaxErrorAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_normalizedMaxErrorAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->normalizedMaxError();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_normalizedMaxError" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_normalizedMaxErrorAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_normalizedMaxErrorAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_normalizedMaxErrorAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_normalizedMaxErrorAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_normalizedMaxError(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_normalizedMaxError.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_normalizedMaxError" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->normalizedMaxError();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_normalizedMeanErrorAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_normalizedMeanErrorAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_normalizedMeanErrorAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->normalizedMeanError();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_normalizedMeanError" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_normalizedMeanErrorAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_normalizedMeanErrorAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_normalizedMeanErrorAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_normalizedMeanErrorAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_normalizedMeanError(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_normalizedMeanError.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_normalizedMeanError" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->normalizedMeanError();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orientationAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::OrientationType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->orientation(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orientation" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_orientation" "', argument " "2"" of type '" "Magick::OrientationType""'");
      } 
      arg2 = static_cast< Magick::OrientationType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_orientationAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orientation__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::OrientationType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orientation" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_orientation" "', argument " "2"" of type '" "Magick::OrientationType""'");
    } 
    arg2 = static_cast< Magick::OrientationType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->orientation(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orientationAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::OrientationType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::OrientationType)((Magick::Image const *)arg1)->orientation();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orientation" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_orientationAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_orientationAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_orientationAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_orientationAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_orientationAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_orientationAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_orientationAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function orientationAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orientation__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::OrientationType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orientation" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::OrientationType)((Magick::Image const *)arg1)->orientation();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_orientation(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_orientation__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_orientation__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_orientation__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_orientation__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function orientation.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pageAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->page((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_page" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_page" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_page" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_pageAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_pageAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_page__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_page" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_page" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_page" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->page((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pageAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->page();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_page" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_pageAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_pageAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_pageAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_pageAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pageAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pageAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pageAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pageAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function pageAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_page__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_page" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->page();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_page(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_page__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_page__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_page__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_page__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function page.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_qualityAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quality(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quality" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quality" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_qualityAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quality__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quality" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quality" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quality(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_qualityAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->quality();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quality" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_qualityAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_qualityAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_qualityAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_qualityAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_qualityAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_qualityAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_qualityAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function qualityAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quality__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quality" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->quality();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quality(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quality__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quality__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quality__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quality__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quality.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColorsAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quantizeColors(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColors" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeColors" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeColorsAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColors__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColors" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeColors" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantizeColors(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColorsAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->quantizeColors();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColors" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeColorsAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeColorsAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeColorsAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColorsAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColorsAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColorsAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColorsAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeColorsAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColors__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColors" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->quantizeColors();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeColors(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColors__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColors__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColors__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColors__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeColors.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ColorspaceType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quantizeColorSpace(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColorSpace" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeColorSpace" "', argument " "2"" of type '" "Magick::ColorspaceType""'");
      } 
      arg2 = static_cast< Magick::ColorspaceType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColorSpace__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ColorspaceType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColorSpace" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeColorSpace" "', argument " "2"" of type '" "Magick::ColorspaceType""'");
    } 
    arg2 = static_cast< Magick::ColorspaceType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantizeColorSpace(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ColorspaceType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::ColorspaceType)((Magick::Image const *)arg1)->quantizeColorSpace();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColorSpace" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeColorSpaceAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColorSpaceAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeColorSpaceAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeColorSpace__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ColorspaceType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeColorSpace" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ColorspaceType)((Magick::Image const *)arg1)->quantizeColorSpace();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeColorSpace(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColorSpace__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColorSpace__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeColorSpace__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeColorSpace__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeColorSpace.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDitherAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quantizeDither(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDither" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeDither" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeDitherAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDither__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDither" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeDither" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantizeDither(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDitherAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->quantizeDither();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDither" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeDitherAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeDitherAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeDitherAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDitherAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDitherAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDitherAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDitherAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeDitherAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDither__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDither" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->quantizeDither();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeDither(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDither__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDither__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDither__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDither__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeDither.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::DitherMethod arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quantizeDitherMethod(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDitherMethod" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeDitherMethod" "', argument " "2"" of type '" "Magick::DitherMethod""'");
      } 
      arg2 = static_cast< Magick::DitherMethod >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDitherMethod__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::DitherMethod arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDitherMethod" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeDitherMethod" "', argument " "2"" of type '" "Magick::DitherMethod""'");
    } 
    arg2 = static_cast< Magick::DitherMethod >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantizeDitherMethod(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::DitherMethod result;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::DitherMethod)((Magick::Image const *)arg1)->quantizeDitherMethod();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDitherMethod" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeDitherMethodAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDitherMethodAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeDitherMethodAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeDitherMethod__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DitherMethod result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeDitherMethod" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DitherMethod)((Magick::Image const *)arg1)->quantizeDitherMethod();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeDitherMethod(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDitherMethod__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDitherMethod__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeDitherMethod__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeDitherMethod__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeDitherMethod.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quantizeTreeDepth(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeTreeDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeTreeDepth" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeTreeDepth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeTreeDepth" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantizeTreeDepth" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantizeTreeDepth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->quantizeTreeDepth();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeTreeDepth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeTreeDepthAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeTreeDepthAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeTreeDepthAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeTreeDepth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeTreeDepth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->quantizeTreeDepth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeTreeDepth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeTreeDepth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeTreeDepth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeTreeDepth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeTreeDepth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeTreeDepth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quietAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quiet(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quiet" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quiet" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quietAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quietAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quiet__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quiet" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quiet" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quiet(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quietAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->quiet();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quiet" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quietAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quietAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quietAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quietAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quietAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quietAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quietAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quietAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quietAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quiet__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quiet" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->quiet();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quiet(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quiet__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quiet__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quiet__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quiet__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quiet.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_renderingIntentAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::RenderingIntent arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->renderingIntent(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_renderingIntent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_renderingIntent" "', argument " "2"" of type '" "Magick::RenderingIntent""'");
      } 
      arg2 = static_cast< Magick::RenderingIntent >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_renderingIntentAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_renderingIntent__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::RenderingIntent arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_renderingIntent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_renderingIntent" "', argument " "2"" of type '" "Magick::RenderingIntent""'");
    } 
    arg2 = static_cast< Magick::RenderingIntent >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->renderingIntent(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_renderingIntentAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::RenderingIntent result;
    
  public:
    _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::RenderingIntent)((Magick::Image const *)arg1)->renderingIntent();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_renderingIntent" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_renderingIntentAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_renderingIntentAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_renderingIntentAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_renderingIntentAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_renderingIntentAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_renderingIntentAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_renderingIntentAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function renderingIntentAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_renderingIntent__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::RenderingIntent result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_renderingIntent" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::RenderingIntent)((Magick::Image const *)arg1)->renderingIntent();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_renderingIntent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_renderingIntent__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_renderingIntent__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_renderingIntent__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_renderingIntent__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function renderingIntent.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resolutionUnitsAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ResolutionType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->resolutionUnits(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resolutionUnits" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_resolutionUnits" "', argument " "2"" of type '" "Magick::ResolutionType""'");
      } 
      arg2 = static_cast< Magick::ResolutionType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_resolutionUnitsAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resolutionUnits__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ResolutionType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resolutionUnits" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_resolutionUnits" "', argument " "2"" of type '" "Magick::ResolutionType""'");
    } 
    arg2 = static_cast< Magick::ResolutionType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->resolutionUnits(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resolutionUnitsAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ResolutionType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::ResolutionType)((Magick::Image const *)arg1)->resolutionUnits();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resolutionUnits" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_resolutionUnitsAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_resolutionUnitsAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_resolutionUnitsAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_resolutionUnitsAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_resolutionUnitsAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_resolutionUnitsAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_resolutionUnitsAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function resolutionUnitsAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resolutionUnits__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ResolutionType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resolutionUnits" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ResolutionType)((Magick::Image const *)arg1)->resolutionUnits();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_resolutionUnits(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_resolutionUnits__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_resolutionUnits__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_resolutionUnits__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_resolutionUnits__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function resolutionUnits.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rowsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_rowsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_rowsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->rows();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rows" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_rowsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rowsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_rowsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_rowsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rows(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rows.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rows" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->rows();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_samplingFactorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->samplingFactor((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_samplingFactor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_samplingFactor" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_samplingFactor" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_samplingFactorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_samplingFactor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_samplingFactor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_samplingFactor" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_samplingFactor" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->samplingFactor((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_samplingFactorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->samplingFactor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_samplingFactor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_samplingFactorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_samplingFactorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_samplingFactorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_samplingFactorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_samplingFactorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_samplingFactorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_samplingFactorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function samplingFactorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_samplingFactor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_samplingFactor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->samplingFactor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_samplingFactor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_samplingFactor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_samplingFactor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_samplingFactor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_samplingFactor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function samplingFactor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sceneAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->scene(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_scene" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_scene" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sceneAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_scene__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_scene" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_scene" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->scene(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sceneAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->scene();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_scene" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sceneAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sceneAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sceneAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sceneAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sceneAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sceneAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sceneAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sceneAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_scene__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_scene" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->scene();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_scene(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_scene__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_scene__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_scene__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_scene__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function scene.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->size((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_size" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sizeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_size__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_size" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->size((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->size();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sizeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_size__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_size" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->size();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_size(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_size__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_size__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_size__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_size__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function size.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeAntiAlias(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeAntiAlias" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeAntiAlias" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeAntiAlias__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeAntiAlias" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeAntiAlias" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeAntiAlias(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->strokeAntiAlias();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeAntiAlias" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeAntiAliasAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeAntiAliasAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeAntiAliasAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeAntiAlias__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeAntiAlias" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->strokeAntiAlias();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeAntiAlias(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeAntiAlias__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeAntiAlias__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeAntiAlias__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeAntiAlias__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeAntiAlias.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Color from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Color(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->strokeColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->strokeColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashArrayAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double *arg2 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeDashArray((double const *)arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashArray" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_strokeDashArray" "', argument " "2"" of type '" "double const *""'"); 
      }
      arg2 = reinterpret_cast< double * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeDashArrayAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashArray__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double *arg2 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashArray" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_strokeDashArray" "', argument " "2"" of type '" "double const *""'"); 
    }
    arg2 = reinterpret_cast< double * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeDashArray((double const *)arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashArrayAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double *)((Magick::Image const *)arg1)->strokeDashArray();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashArray" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeDashArrayAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeDashArrayAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeDashArrayAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashArrayAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashArrayAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashArrayAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashArrayAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeDashArrayAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashArray__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double *result = 0 ;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashArray" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double *)((Magick::Image const *)arg1)->strokeDashArray();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeDashArray(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashArray__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashArray__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashArray__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashArray__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeDashArray.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeDashOffset(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashOffset" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeDashOffset" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashOffset__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashOffset" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeDashOffset" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeDashOffset(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->strokeDashOffset();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashOffset" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeDashOffsetAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashOffsetAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeDashOffsetAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeDashOffset__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeDashOffset" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->strokeDashOffset();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeDashOffset(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashOffset__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashOffset__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeDashOffset__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeDashOffset__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeDashOffset.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineCapAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::LineCap arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeLineCap(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineCap" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeLineCap" "', argument " "2"" of type '" "Magick::LineCap""'");
      } 
      arg2 = static_cast< Magick::LineCap >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeLineCapAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineCap__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::LineCap arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineCap" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeLineCap" "', argument " "2"" of type '" "Magick::LineCap""'");
    } 
    arg2 = static_cast< Magick::LineCap >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeLineCap(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineCapAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::LineCap result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::LineCap)((Magick::Image const *)arg1)->strokeLineCap();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineCap" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeLineCapAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeLineCapAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeLineCapAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineCapAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineCapAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineCapAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineCapAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeLineCapAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineCap__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::LineCap result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineCap" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::LineCap)((Magick::Image const *)arg1)->strokeLineCap();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeLineCap(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineCap__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineCap__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineCap__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineCap__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeLineCap.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineJoinAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::LineJoin arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeLineJoin(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineJoin" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeLineJoin" "', argument " "2"" of type '" "Magick::LineJoin""'");
      } 
      arg2 = static_cast< Magick::LineJoin >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeLineJoinAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineJoin__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::LineJoin arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineJoin" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeLineJoin" "', argument " "2"" of type '" "Magick::LineJoin""'");
    } 
    arg2 = static_cast< Magick::LineJoin >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeLineJoin(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineJoinAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::LineJoin result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::LineJoin)((Magick::Image const *)arg1)->strokeLineJoin();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineJoin" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeLineJoinAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeLineJoinAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeLineJoinAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineJoinAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineJoinAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineJoinAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineJoinAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeLineJoinAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeLineJoin__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::LineJoin result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeLineJoin" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::LineJoin)((Magick::Image const *)arg1)->strokeLineJoin();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeLineJoin(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineJoin__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineJoin__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeLineJoin__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeLineJoin__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeLineJoin.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeMiterLimit(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeMiterLimit" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeMiterLimit" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeMiterLimit__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeMiterLimit" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeMiterLimit" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeMiterLimit(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->strokeMiterLimit();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeMiterLimit" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeMiterLimitAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeMiterLimitAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeMiterLimitAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeMiterLimit__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeMiterLimit" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->strokeMiterLimit();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeMiterLimit(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeMiterLimit__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeMiterLimit__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeMiterLimit__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeMiterLimit__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeMiterLimit.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokePatternAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokePattern((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokePattern" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_strokePattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_strokePattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokePatternAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokePattern__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokePattern" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_strokePattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_strokePattern" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokePattern((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokePatternAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->strokePattern();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokePattern" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokePatternAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokePatternAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokePatternAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokePatternAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokePatternAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokePatternAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokePatternAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokePatternAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokePattern__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokePattern" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->strokePattern();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokePattern(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokePattern__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokePattern__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokePattern__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokePattern__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokePattern.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeWidthAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeWidth(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeWidth" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeWidth" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeWidthAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeWidth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeWidth" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_strokeWidth" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeWidth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeWidthAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->strokeWidth();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeWidth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strokeWidthAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_strokeWidthAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeWidthAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeWidthAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeWidthAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeWidthAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeWidthAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeWidthAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strokeWidth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strokeWidth" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->strokeWidth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_strokeWidth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeWidth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeWidth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_strokeWidth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_strokeWidth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeWidth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImageAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->subImage(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImage" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_subImage" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_subImageAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImage" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_subImage" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->subImage(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImageAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->subImage();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImage" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_subImageAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_subImageAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_subImageAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImageAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImageAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImageAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImageAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function subImageAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImage" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->subImage();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_subImage(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function subImage.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subRangeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->subRange(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subRange" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_subRange" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_subRangeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subRange__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subRange" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_subRange" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->subRange(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subRangeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->subRange();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subRange" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_subRangeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_subRangeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_subRangeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subRangeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subRangeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subRangeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subRangeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function subRangeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subRange__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subRange" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->subRange();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_subRange(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subRange__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subRange__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subRange__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subRange__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function subRange.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textAntiAliasAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textAntiAlias(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textAntiAlias" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textAntiAlias" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textAntiAliasAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textAntiAlias__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textAntiAlias" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textAntiAlias" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textAntiAlias(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textAntiAliasAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->textAntiAlias();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textAntiAlias" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textAntiAliasAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textAntiAliasAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textAntiAliasAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textAntiAliasAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textAntiAliasAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textAntiAliasAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textAntiAliasAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textAntiAliasAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textAntiAlias__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textAntiAlias" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->textAntiAlias();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textAntiAlias(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textAntiAlias__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textAntiAlias__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textAntiAlias__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textAntiAlias__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textAntiAlias.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textDirectionAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::DirectionType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textDirection(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textDirection" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textDirection" "', argument " "2"" of type '" "Magick::DirectionType""'");
      } 
      arg2 = static_cast< Magick::DirectionType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textDirectionAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textDirection__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::DirectionType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textDirection" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textDirection" "', argument " "2"" of type '" "Magick::DirectionType""'");
    } 
    arg2 = static_cast< Magick::DirectionType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textDirection(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textDirectionAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::DirectionType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::DirectionType)((Magick::Image const *)arg1)->textDirection();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textDirection" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textDirectionAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textDirectionAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textDirectionAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textDirectionAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textDirectionAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textDirectionAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textDirectionAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textDirectionAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textDirection__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::DirectionType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textDirection" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::DirectionType)((Magick::Image const *)arg1)->textDirection();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textDirection(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textDirection__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textDirection__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textDirection__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textDirection__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textDirection.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textEncodingAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textEncoding((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textEncoding" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_textEncoding" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_textEncoding" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textEncodingAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textEncoding__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textEncoding" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_textEncoding" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_textEncoding" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textEncoding((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textEncodingAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->textEncoding();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textEncoding" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textEncodingAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textEncodingAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textEncodingAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textEncodingAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textEncodingAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textEncodingAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textEncodingAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textEncodingAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textEncoding__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textEncoding" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->textEncoding();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textEncoding(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textEncoding__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textEncoding__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textEncoding__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textEncoding__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textEncoding.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textGravityAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::GravityType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textGravity(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textGravity" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textGravity" "', argument " "2"" of type '" "Magick::GravityType""'");
      } 
      arg2 = static_cast< Magick::GravityType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textGravityAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textGravity__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::GravityType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textGravity" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textGravity" "', argument " "2"" of type '" "Magick::GravityType""'");
    } 
    arg2 = static_cast< Magick::GravityType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textGravity(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textGravityAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::GravityType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::GravityType)((Magick::Image const *)arg1)->textGravity();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textGravity" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textGravityAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textGravityAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textGravityAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textGravityAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textGravityAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textGravityAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textGravityAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textGravityAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textGravity__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::GravityType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textGravity" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::GravityType)((Magick::Image const *)arg1)->textGravity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textGravity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textGravity__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textGravity__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textGravity__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textGravity__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textGravity.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textInterlineSpacing(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterlineSpacing" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textInterlineSpacing" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterlineSpacing__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterlineSpacing" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textInterlineSpacing" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textInterlineSpacing(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->textInterlineSpacing();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterlineSpacing" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textInterlineSpacingAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterlineSpacingAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textInterlineSpacingAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterlineSpacing__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterlineSpacing" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->textInterlineSpacing();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textInterlineSpacing(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterlineSpacing__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterlineSpacing__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterlineSpacing__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterlineSpacing__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textInterlineSpacing.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textInterwordSpacing(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterwordSpacing" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textInterwordSpacing" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterwordSpacing__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterwordSpacing" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textInterwordSpacing" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textInterwordSpacing(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->textInterwordSpacing();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterwordSpacing" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textInterwordSpacingAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterwordSpacingAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textInterwordSpacingAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textInterwordSpacing__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textInterwordSpacing" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->textInterwordSpacing();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textInterwordSpacing(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterwordSpacing__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterwordSpacing__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textInterwordSpacing__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textInterwordSpacing__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textInterwordSpacing.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textKerningAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textKerning(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textKerning" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textKerning" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textKerningAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textKerning__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textKerning" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_textKerning" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textKerning(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textKerningAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->textKerning();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textKerning" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textKerningAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textKerningAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textKerningAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textKerningAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textKerningAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textKerningAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textKerningAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textKerningAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textKerning__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textKerning" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->textKerning();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textKerning(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textKerning__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textKerning__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textKerning__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textKerning__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textKerning.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textUnderColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->textUnderColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textUnderColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_textUnderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_textUnderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textUnderColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textUnderColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textUnderColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_textUnderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_textUnderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->textUnderColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textUnderColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->textUnderColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textUnderColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textUnderColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textUnderColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textUnderColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textUnderColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textUnderColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textUnderColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textUnderColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textUnderColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textUnderColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_textUnderColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->textUnderColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_textUnderColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textUnderColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textUnderColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_textUnderColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_textUnderColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textUnderColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_totalColorsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_totalColorsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Image__wrap_Magick_Image_totalColorsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->totalColors();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_totalColors" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_totalColorsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_totalColorsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_totalColorsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_totalColorsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_totalColors(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_totalColors.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_totalColors" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->totalColors();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformRotationAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transformRotationAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transformRotationAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transformRotation(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformRotation" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformRotation" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transformRotationAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformRotationAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transformRotationAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transformRotationAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformRotation(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformRotation.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformRotation" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformRotation" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transformRotation(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformSkewXAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transformSkewXAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transformSkewXAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transformSkewX(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformSkewX" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformSkewX" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transformSkewXAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformSkewXAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transformSkewXAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transformSkewXAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformSkewX(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformSkewX.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformSkewX" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformSkewX" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transformSkewX(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformSkewYAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transformSkewYAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transformSkewYAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transformSkewY(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformSkewY" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformSkewY" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transformSkewYAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformSkewYAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transformSkewYAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transformSkewYAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformSkewY(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformSkewY.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformSkewY" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformSkewY" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transformSkewY(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_typeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ImageType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->type(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_type" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_type" "', argument " "2"" of type '" "Magick::ImageType""'");
      } 
      arg2 = static_cast< Magick::ImageType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_typeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_typeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_type__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ImageType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_type" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_type" "', argument " "2"" of type '" "Magick::ImageType""'");
    } 
    arg2 = static_cast< Magick::ImageType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->type(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_typeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ImageType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::ImageType)((Magick::Image const *)arg1)->type();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_type" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_typeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_typeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_typeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_typeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_typeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_typeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_typeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_typeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function typeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_type__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ImageType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_type" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ImageType)((Magick::Image const *)arg1)->type();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_type(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_type__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_type__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_type__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_type__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function type.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_verboseAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->verbose(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_verbose" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_verbose" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_verboseAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_verbose__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_verbose" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_verbose" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->verbose(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_verboseAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->verbose();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_verbose" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_verboseAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_verboseAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_verboseAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_verboseAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_verboseAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_verboseAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_verboseAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function verboseAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_verbose__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_verbose" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->verbose();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_verbose(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_verbose__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_verbose__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_verbose__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_verbose__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function verbose.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::VirtualPixelMethod arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->virtualPixelMethod(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_virtualPixelMethod" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_virtualPixelMethod" "', argument " "2"" of type '" "Magick::VirtualPixelMethod""'");
      } 
      arg2 = static_cast< Magick::VirtualPixelMethod >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_virtualPixelMethod__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::VirtualPixelMethod arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_virtualPixelMethod" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_virtualPixelMethod" "', argument " "2"" of type '" "Magick::VirtualPixelMethod""'");
    } 
    arg2 = static_cast< Magick::VirtualPixelMethod >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->virtualPixelMethod(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::VirtualPixelMethod result;
    
  public:
    _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::VirtualPixelMethod)((Magick::Image const *)arg1)->virtualPixelMethod();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_virtualPixelMethod" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_virtualPixelMethodAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_virtualPixelMethodAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function virtualPixelMethodAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_virtualPixelMethod__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::VirtualPixelMethod result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_virtualPixelMethod" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::VirtualPixelMethod)((Magick::Image const *)arg1)->virtualPixelMethod();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_virtualPixelMethod(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_virtualPixelMethod__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_virtualPixelMethod__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_virtualPixelMethod__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_virtualPixelMethod__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function virtualPixelMethod.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_x11DisplayAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->x11Display((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_x11Display" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_x11Display" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_x11Display" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_x11DisplayAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_x11Display__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_x11Display" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_x11Display" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_x11Display" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->x11Display((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_x11DisplayAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->x11Display();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_x11Display" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_x11DisplayAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_x11DisplayAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_x11DisplayAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_x11DisplayAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_x11DisplayAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_x11DisplayAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_x11DisplayAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x11DisplayAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_x11Display__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_x11Display" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->x11Display();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_x11Display(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_x11Display__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_x11Display__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_x11Display__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_x11Display__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function x11Display.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_xResolutionAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_xResolutionAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_xResolutionAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->xResolution();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_xResolution" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_xResolutionAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_xResolutionAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_xResolutionAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_xResolutionAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_xResolution(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_xResolution.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_xResolution" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->xResolution();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_yResolutionAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_yResolutionAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_yResolutionAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)((Magick::Image const *)arg1)->yResolution();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_yResolution" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_yResolutionAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_yResolutionAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_yResolutionAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_yResolutionAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_yResolution(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_yResolution.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_yResolution" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)((Magick::Image const *)arg1)->yResolution();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveBlurAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveBlur(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveBlur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveBlur" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveBlurAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveBlur__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveBlur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveBlur" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveBlur(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveBlurAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveBlur(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveBlur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveBlurAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveBlur__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveBlur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveBlur(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveBlurAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveBlur();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveBlurAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveBlurAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveBlurAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveBlurAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveBlurAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveBlurAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveBlurAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveBlurAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveBlurAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveBlurAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveBlur__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveBlur();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveBlur(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveBlur__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveBlur__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveBlur__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveBlur__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveBlur__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveBlur__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveBlur.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveResizeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveResizeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveResizeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveResize((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveResizeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveResizeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveResizeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveResizeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveResize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveResize.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_adaptiveResize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveResize((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveSharpen(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpen__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveSharpen(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveSharpen(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpen__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveSharpen(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveSharpen();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveSharpenAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveSharpenAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpen__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveSharpen();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveSharpen(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpen__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpen__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpen__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpen__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpen__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpen__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveSharpen.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveSharpenChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveSharpenChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveSharpenChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveSharpenChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveSharpenChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveSharpenChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenChannelAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveSharpenChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveSharpenChannel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveSharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveSharpenChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveSharpenChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveSharpenChannel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveSharpenChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveThreshold(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveThreshold__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveThreshold(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->adaptiveThreshold(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveThresholdAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveThresholdAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveThresholdAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_adaptiveThreshold__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_adaptiveThreshold" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->adaptiveThreshold(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_adaptiveThreshold(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveThreshold__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveThreshold__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_adaptiveThreshold__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_adaptiveThreshold__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function adaptiveThreshold.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoiseAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::NoiseType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->addNoise(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoise" "', argument " "2"" of type '" "Magick::NoiseType""'");
      } 
      arg2 = static_cast< Magick::NoiseType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_addNoise" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_addNoiseAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoise__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::NoiseType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoise" "', argument " "2"" of type '" "Magick::NoiseType""'");
    } 
    arg2 = static_cast< Magick::NoiseType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_addNoise" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->addNoise(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoiseAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::NoiseType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->addNoise(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoise" "', argument " "2"" of type '" "Magick::NoiseType""'");
      } 
      arg2 = static_cast< Magick::NoiseType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_addNoiseAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_addNoiseAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_addNoiseAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoiseAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoiseAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoiseAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoiseAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function addNoiseAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoise__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::NoiseType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoise" "', argument " "2"" of type '" "Magick::NoiseType""'");
    } 
    arg2 = static_cast< Magick::NoiseType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->addNoise(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_addNoise(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoise__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoise__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoise__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoise__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function addNoise.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoiseChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::NoiseType arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->addNoiseChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoiseChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoiseChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_addNoiseChannel" "', argument " "3"" of type '" "Magick::NoiseType""'");
      } 
      arg3 = static_cast< Magick::NoiseType >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_addNoiseChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_addNoiseChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoiseChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::NoiseType arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoiseChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoiseChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_addNoiseChannel" "', argument " "3"" of type '" "Magick::NoiseType""'");
    } 
    arg3 = static_cast< Magick::NoiseType >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_addNoiseChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->addNoiseChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoiseChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::NoiseType arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->addNoiseChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoiseChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoiseChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_addNoiseChannel" "', argument " "3"" of type '" "Magick::NoiseType""'");
      } 
      arg3 = static_cast< Magick::NoiseType >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_addNoiseChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_addNoiseChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_addNoiseChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoiseChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoiseChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoiseChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoiseChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function addNoiseChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_addNoiseChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::NoiseType arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_addNoiseChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_addNoiseChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_addNoiseChannel" "', argument " "3"" of type '" "Magick::NoiseType""'");
    } 
    arg3 = static_cast< Magick::NoiseType >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->addNoiseChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_addNoiseChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoiseChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoiseChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_addNoiseChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_addNoiseChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function addNoiseChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_affineTransformAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_affineTransformAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::DrawableAffine *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_affineTransformAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->affineTransform((Magick::DrawableAffine const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_affineTransform" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__DrawableAffine,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_affineTransform" "', argument " "2"" of type '" "Magick::DrawableAffine const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_affineTransform" "', argument " "2"" of type '" "Magick::DrawableAffine const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::DrawableAffine * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_affineTransformAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_affineTransformAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_affineTransformAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_affineTransformAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_affineTransform(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::DrawableAffine *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_affineTransform.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_affineTransform" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__DrawableAffine,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_affineTransform" "', argument " "2"" of type '" "Magick::DrawableAffine const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_affineTransform" "', argument " "2"" of type '" "Magick::DrawableAffine const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::DrawableAffine * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->affineTransform((Magick::DrawableAffine const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alphaAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    unsigned int arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->alpha(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_alpha" "', argument " "2"" of type '" "unsigned int""'");
      } 
      arg2 = static_cast< unsigned int >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_alphaAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_alphaAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_alphaAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_alphaAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_alphaAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_alphaAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_alphaAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_alphaAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_alphaAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function alphaAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alpha__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  unsigned int arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_alpha" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = static_cast< unsigned int >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->alpha(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_alpha(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_alpha__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_alpha__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_alpha__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_alpha__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_alpha__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_alpha__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function alpha.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alphaChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_alphaChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::AlphaChannelOption arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_alphaChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->alphaChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alphaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_alphaChannel" "', argument " "2"" of type '" "Magick::AlphaChannelOption""'");
      } 
      arg2 = static_cast< Magick::AlphaChannelOption >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_alphaChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_alphaChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_alphaChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_alphaChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_alphaChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::AlphaChannelOption arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_alphaChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_alphaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_alphaChannel" "', argument " "2"" of type '" "Magick::AlphaChannelOption""'");
    } 
    arg2 = static_cast< Magick::AlphaChannelOption >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->alphaChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotateAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->annotate((std::string const &)*arg2,(Magick::Geometry const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Geometry * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_annotateAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotate__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Geometry * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->annotate((std::string const &)*arg2,(Magick::Geometry const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotateAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    Magick::GravityType arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->annotate((std::string const &)*arg2,(Magick::Geometry const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Geometry * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_annotate" "', argument " "4"" of type '" "Magick::GravityType""'");
      } 
      arg4 = static_cast< Magick::GravityType >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_annotateAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotate__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  Magick::GravityType arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Geometry * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_annotate" "', argument " "4"" of type '" "Magick::GravityType""'");
    } 
    arg4 = static_cast< Magick::GravityType >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->annotate((std::string const &)*arg2,(Magick::Geometry const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotateAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    Magick::GravityType arg4 ;
    double arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    double val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->annotate((std::string const &)*arg2,(Magick::Geometry const &)*arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Geometry * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_annotate" "', argument " "4"" of type '" "Magick::GravityType""'");
      } 
      arg4 = static_cast< Magick::GravityType >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_annotate" "', argument " "5"" of type '" "double""'");
      } 
      arg5 = static_cast< double >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_annotateAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotate__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  Magick::GravityType arg4 ;
  double arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::Geometry const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Geometry * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_annotate" "', argument " "4"" of type '" "Magick::GravityType""'");
    } 
    arg4 = static_cast< Magick::GravityType >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_annotate" "', argument " "5"" of type '" "double""'");
    } 
    arg5 = static_cast< double >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->annotate((std::string const &)*arg2,(Magick::Geometry const &)*arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotateAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    Magick::GravityType arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->annotate((std::string const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::GravityType""'");
      } 
      arg3 = static_cast< Magick::GravityType >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_annotateAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_annotateAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_annotateAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotateAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotateAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotateAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotateAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotateAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotateAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotateAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotateAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function annotateAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_annotate__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  Magick::GravityType arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_annotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_annotate" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_annotate" "', argument " "3"" of type '" "Magick::GravityType""'");
    } 
    arg3 = static_cast< Magick::GravityType >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->annotate((std::string const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_annotate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotate__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotate__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotate__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotate__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotate__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotate__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_annotate__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_annotate__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function annotate.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_artifactAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    std::string *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->artifact((std::string const &)*arg2,(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_artifact" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_artifact" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_artifact" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_artifactAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_artifact__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_artifact" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_artifact" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_artifact" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->artifact((std::string const &)*arg2,(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_artifactAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->artifact((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_artifact" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_artifactAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_artifactAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_artifactAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_artifactAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_artifactAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_artifactAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_artifactAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function artifactAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_artifact__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_artifact" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_artifact" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->artifact((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_artifact(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_artifact__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_artifact__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_artifact__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_artifact__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function artifact.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_attributeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    char *arg3 = (char *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res3 ;
    char *buf3 = 0 ;
    int alloc3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->attribute(arg2,(char const *)arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_attribute" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      res3 = SWIG_AsCharPtrAndSize(info[1], &buf3, NULL, &alloc3);
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_attribute" "', argument " "3"" of type '" "char const *""'");
      }
      arg3 = reinterpret_cast< char * >(buf3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_attributeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_attribute__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  char *arg3 = (char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res3 ;
  char *buf3 = 0 ;
  int alloc3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_attribute" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    res3 = SWIG_AsCharPtrAndSize(info[1], &buf3, NULL, &alloc3);
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_attribute" "', argument " "3"" of type '" "char const *""'");
    }
    arg3 = reinterpret_cast< char * >(buf3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->attribute(arg2,(char const *)arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_attributeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    std::string arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->attribute(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_attribute" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "3"" of type '" "std::string const""'"); 
          }
          arg3 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_attributeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_attribute__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  std::string arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_attribute" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "3"" of type '" "std::string const""'"); 
        }
        arg3 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->attribute(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_attributeAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->attribute(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_attribute" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_attributeAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_attributeAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_attributeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_attributeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_attributeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_attributeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_attributeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_attributeAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_attributeAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function attributeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_attribute__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_attribute" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_attribute" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->attribute(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_attribute(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_attribute__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_attribute__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_attribute__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_attribute__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_attribute__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_attribute__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function attribute.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoGammaAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_autoGammaAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_autoGammaAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->autoGamma();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoGamma" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_autoGammaAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoGammaAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_autoGammaAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_autoGammaAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoGamma(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoGamma.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoGamma" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->autoGamma();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoGammaChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_autoGammaChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_autoGammaChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->autoGammaChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoGammaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_autoGammaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_autoGammaChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoGammaChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_autoGammaChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_autoGammaChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoGammaChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoGammaChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoGammaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_autoGammaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->autoGammaChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoLevelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_autoLevelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_autoLevelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->autoLevel();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoLevel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_autoLevelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoLevelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_autoLevelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_autoLevelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoLevel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoLevel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoLevel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->autoLevel();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoLevelChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_autoLevelChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_autoLevelChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->autoLevelChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoLevelChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_autoLevelChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_autoLevelChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoLevelChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_autoLevelChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_autoLevelChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoLevelChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoLevelChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoLevelChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_autoLevelChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->autoLevelChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoOrientAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_autoOrientAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_autoOrientAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->autoOrient();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoOrient" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_autoOrientAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoOrientAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_autoOrientAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_autoOrientAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoOrient(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoOrient.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoOrient" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->autoOrient();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoThresholdAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_autoThresholdAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::AutoThresholdMethod arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_autoThresholdAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->autoThreshold(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_autoThreshold" "', argument " "2"" of type '" "Magick::AutoThresholdMethod""'");
      } 
      arg2 = static_cast< Magick::AutoThresholdMethod >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_autoThresholdAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoThresholdAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_autoThresholdAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_autoThresholdAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_autoThreshold(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::AutoThresholdMethod arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_autoThreshold.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_autoThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_autoThreshold" "', argument " "2"" of type '" "Magick::AutoThresholdMethod""'");
    } 
    arg2 = static_cast< Magick::AutoThresholdMethod >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->autoThreshold(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackThresholdAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blackThresholdAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blackThresholdAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blackThreshold((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_blackThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_blackThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blackThresholdAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blackThresholdAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blackThresholdAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blackThresholdAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackThreshold(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blackThreshold.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_blackThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_blackThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blackThreshold((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackThresholdChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blackThresholdChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    std::string *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blackThresholdChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blackThresholdChannel(arg2,(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackThresholdChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blackThresholdChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);{
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_blackThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_blackThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blackThresholdChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blackThresholdChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blackThresholdChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blackThresholdChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blackThresholdChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blackThresholdChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blackThresholdChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blackThresholdChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);{
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_blackThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_blackThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blackThresholdChannel(arg2,(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blueShiftAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blueShift(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blueShift" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blueShift" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blueShiftAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blueShift__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blueShift" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blueShift" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blueShift(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blueShiftAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blueShift();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blueShift" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blueShiftAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blueShiftAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blueShiftAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blueShiftAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blueShiftAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blueShiftAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blueShiftAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blueShiftAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blueShift__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blueShift" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blueShift();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blueShift(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blueShift__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blueShift__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blueShift__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blueShift__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blueShift.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blur(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_blur" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blurAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blurAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blur__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_blur" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blur(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blur(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blurAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blurAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blur__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blur(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blur();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blurAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blurAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blurAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blurAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blurAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blur__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blur();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blur(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blur__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blur__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blur__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blur__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blur__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blur__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blur.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blurChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_blurChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_blurChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blurChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_blurChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_blurChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blurChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blurChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_blurChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blurChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_blurChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blurChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurChannelAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->blurChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_blurChannelAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_blurChannelAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blurChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurChannelAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurChannelAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blurChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_blurChannel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_blurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_blurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->blurChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_blurChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_blurChannel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_blurChannel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function blurChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_borderAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->border((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_border" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_borderAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_borderAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_border__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_border" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->border((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_borderAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->border();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_borderAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_borderAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_borderAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_borderAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_borderAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_borderAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_borderAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_borderAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function borderAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_border__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_border" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->border();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_border(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_border__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_border__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_border__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_border__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function border.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->brightnessContrast(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrast" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_brightnessContrast" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_brightnessContrastAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrast__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrast" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_brightnessContrast" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->brightnessContrast(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->brightnessContrast(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrast" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_brightnessContrastAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrast__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrast" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->brightnessContrast(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->brightnessContrast();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_brightnessContrastAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_brightnessContrastAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_brightnessContrastAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function brightnessContrastAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrast__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->brightnessContrast();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_brightnessContrast(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrast__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrast__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrast__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrast__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrast__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrast__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function brightnessContrast.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->brightnessContrastChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->brightnessContrastChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->brightnessContrastChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->brightnessContrastChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->brightnessContrastChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_brightnessContrastChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastChannelAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function brightnessContrastChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_brightnessContrastChannel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_brightnessContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->brightnessContrastChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_brightnessContrastChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_brightnessContrastChannel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_brightnessContrastChannel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function brightnessContrastChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdgeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    double val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->cannyEdge(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_cannyEdge" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_cannyEdge" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_cannyEdge" "', argument " "5"" of type '" "double""'");
      } 
      arg5 = static_cast< double >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cannyEdgeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdge__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_cannyEdge" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_cannyEdge" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_cannyEdge" "', argument " "5"" of type '" "double""'");
    } 
    arg5 = static_cast< double >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cannyEdge(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdgeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->cannyEdge(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_cannyEdge" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_cannyEdge" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cannyEdgeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdge__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_cannyEdge" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_cannyEdge" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cannyEdge(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdgeAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->cannyEdge(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_cannyEdge" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cannyEdgeAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdge__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_cannyEdge" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cannyEdge(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdgeAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->cannyEdge(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cannyEdgeAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdge__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cannyEdge" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cannyEdge(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdgeAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->cannyEdge();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cannyEdgeAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cannyEdgeAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_cannyEdgeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdgeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdgeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdgeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdgeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdgeAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdgeAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdgeAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdgeAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdgeAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdgeAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function cannyEdgeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cannyEdge__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cannyEdge" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cannyEdge();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_cannyEdge(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdge__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdge__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdge__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdge__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdge__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdge__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdge__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdge__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_cannyEdge__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_cannyEdge__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function cannyEdge.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cdlAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cdlAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cdlAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->cdl((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cdl" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_cdl" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_cdl" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cdlAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cdlAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cdlAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cdlAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cdl(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cdl.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cdl" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_cdl" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_cdl" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cdl((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_channelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_channelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->channel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_channel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_channelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_channelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_channelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_channelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_channel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_channel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_channel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_channel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->channel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->charcoal(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoal" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoal" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_charcoal" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_charcoalAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoal__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoal" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoal" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_charcoal" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->charcoal(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->charcoal(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoal" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoal" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_charcoalAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoal__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoal" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoal" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->charcoal(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->charcoal();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoal" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_charcoalAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_charcoalAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_charcoalAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function charcoalAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoal__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoal" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->charcoal();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_charcoal(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoal__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoal__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoal__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoal__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoal__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoal__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function charcoal.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->charcoalChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoalChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoalChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_charcoalChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_charcoalChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_charcoalChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoalChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoalChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_charcoalChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_charcoalChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->charcoalChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->charcoalChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoalChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoalChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_charcoalChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_charcoalChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoalChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoalChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_charcoalChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->charcoalChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalChannelAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->charcoalChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoalChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoalChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_charcoalChannelAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_charcoalChannelAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_charcoalChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalChannelAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalChannelAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function charcoalChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_charcoalChannel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_charcoalChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_charcoalChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->charcoalChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_charcoalChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_charcoalChannel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_charcoalChannel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function charcoalChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chopAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chopAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chopAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->chop((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chopAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chopAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chopAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chopAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chop(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chop.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_chop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->chop((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->chromaBluePrimary(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaBluePrimary__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->chromaBluePrimary(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double *arg2 = (double *) 0 ;
    double *arg3 = (double *) 0 ;
    double *arg4 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::Image const *)arg1)->chromaBluePrimary(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "2"" of type '" "double *""'"); 
      }
      arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "3"" of type '" "double *""'"); 
      }
      arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "4"" of type '" "double *""'"); 
      }
      arg4 = reinterpret_cast< double * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaBluePrimaryAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaBluePrimaryAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaBluePrimaryAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaBluePrimary__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double *arg2 = (double *) 0 ;
  double *arg3 = (double *) 0 ;
  double *arg4 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "2"" of type '" "double *""'"); 
    }
    arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "3"" of type '" "double *""'"); 
    }
    arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaBluePrimary" "', argument " "4"" of type '" "double *""'"); 
    }
    arg4 = reinterpret_cast< double * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::Image const *)arg1)->chromaBluePrimary(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaBluePrimary(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaBluePrimary__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaBluePrimary__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaBluePrimary__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaBluePrimary__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaBluePrimary.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->chromaGreenPrimary(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaGreenPrimary__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->chromaGreenPrimary(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double *arg2 = (double *) 0 ;
    double *arg3 = (double *) 0 ;
    double *arg4 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::Image const *)arg1)->chromaGreenPrimary(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "2"" of type '" "double *""'"); 
      }
      arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "3"" of type '" "double *""'"); 
      }
      arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "4"" of type '" "double *""'"); 
      }
      arg4 = reinterpret_cast< double * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaGreenPrimaryAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaGreenPrimaryAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaGreenPrimaryAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaGreenPrimary__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double *arg2 = (double *) 0 ;
  double *arg3 = (double *) 0 ;
  double *arg4 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "2"" of type '" "double *""'"); 
    }
    arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "3"" of type '" "double *""'"); 
    }
    arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaGreenPrimary" "', argument " "4"" of type '" "double *""'"); 
    }
    arg4 = reinterpret_cast< double * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::Image const *)arg1)->chromaGreenPrimary(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaGreenPrimary(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaGreenPrimary__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaGreenPrimary__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaGreenPrimary__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaGreenPrimary__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaGreenPrimary.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->chromaRedPrimary(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaRedPrimary__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->chromaRedPrimary(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double *arg2 = (double *) 0 ;
    double *arg3 = (double *) 0 ;
    double *arg4 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::Image const *)arg1)->chromaRedPrimary(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "2"" of type '" "double *""'"); 
      }
      arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "3"" of type '" "double *""'"); 
      }
      arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "4"" of type '" "double *""'"); 
      }
      arg4 = reinterpret_cast< double * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaRedPrimaryAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaRedPrimaryAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaRedPrimaryAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaRedPrimary__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double *arg2 = (double *) 0 ;
  double *arg3 = (double *) 0 ;
  double *arg4 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "2"" of type '" "double *""'"); 
    }
    arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "3"" of type '" "double *""'"); 
    }
    arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaRedPrimary" "', argument " "4"" of type '" "double *""'"); 
    }
    arg4 = reinterpret_cast< double * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::Image const *)arg1)->chromaRedPrimary(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaRedPrimary(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaRedPrimary__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaRedPrimary__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaRedPrimary__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaRedPrimary__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaRedPrimary.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaWhitePointAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->chromaWhitePoint(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaWhitePointAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaWhitePoint__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->chromaWhitePoint(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaWhitePointAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double *arg2 = (double *) 0 ;
    double *arg3 = (double *) 0 ;
    double *arg4 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::Image const *)arg1)->chromaWhitePoint(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "2"" of type '" "double *""'"); 
      }
      arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "3"" of type '" "double *""'"); 
      }
      arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "4"" of type '" "double *""'"); 
      }
      arg4 = reinterpret_cast< double * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_chromaWhitePointAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_chromaWhitePointAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaWhitePointAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaWhitePointAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaWhitePointAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaWhitePointAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaWhitePointAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaWhitePointAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_chromaWhitePoint__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double *arg2 = (double *) 0 ;
  double *arg3 = (double *) 0 ;
  double *arg4 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "2"" of type '" "double *""'"); 
    }
    arg2 = reinterpret_cast< double * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "3"" of type '" "double *""'"); 
    }
    arg3 = reinterpret_cast< double * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_chromaWhitePoint" "', argument " "4"" of type '" "double *""'"); 
    }
    arg4 = reinterpret_cast< double * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::Image const *)arg1)->chromaWhitePoint(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_chromaWhitePoint(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaWhitePoint__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaWhitePoint__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_chromaWhitePoint__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_chromaWhitePoint__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function chromaWhitePoint.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clampAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_clampAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_clampAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->clamp();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clamp" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_clampAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clampAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_clampAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_clampAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clamp(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clamp.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clamp" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clamp();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clampChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_clampChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_clampChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->clampChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clampChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_clampChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_clampChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clampChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_clampChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_clampChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clampChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clampChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clampChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_clampChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clampChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clipAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_clipAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_clipAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->clip();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clip" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_clipAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clipAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_clipAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_clipAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clip(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clip.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clip" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clip();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clipPathAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_clipPathAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    bool arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_clipPathAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->clipPath(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clipPath" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_clipPath" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      ecode3 = SWIG_AsVal_bool(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_clipPath" "', argument " "3"" of type '" "bool""'");
      } 
      arg3 = static_cast< bool >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_clipPathAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clipPathAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_clipPathAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_clipPathAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clipPath(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clipPath.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clipPath" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_clipPath" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    ecode3 = SWIG_AsVal_bool(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_clipPath" "', argument " "3"" of type '" "bool""'");
    } 
    arg3 = static_cast< bool >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clipPath(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clutAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_clutAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::PixelInterpolateMethod arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_clutAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->clut((Magick::Image const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clut" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_clut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_clut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_clut" "', argument " "3"" of type '" "Magick::PixelInterpolateMethod""'");
      } 
      arg3 = static_cast< Magick::PixelInterpolateMethod >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_clutAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clutAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_clutAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_clutAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clut(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::PixelInterpolateMethod arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clut.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clut" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_clut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_clut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_clut" "', argument " "3"" of type '" "Magick::PixelInterpolateMethod""'");
    } 
    arg3 = static_cast< Magick::PixelInterpolateMethod >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clut((Magick::Image const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clutChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_clutChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::Image *arg3 = 0 ;
    Magick::PixelInterpolateMethod arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_clutChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->clutChannel(arg2,(Magick::Image const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clutChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_clutChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_clutChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_clutChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_clutChannel" "', argument " "4"" of type '" "Magick::PixelInterpolateMethod""'");
      } 
      arg4 = static_cast< Magick::PixelInterpolateMethod >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_clutChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clutChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_clutChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_clutChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_clutChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::Image *arg3 = 0 ;
  Magick::PixelInterpolateMethod arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_clutChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_clutChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_clutChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_clutChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_clutChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_clutChannel" "', argument " "4"" of type '" "Magick::PixelInterpolateMethod""'");
    } 
    arg4 = static_cast< Magick::PixelInterpolateMethod >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clutChannel(arg2,(Magick::Image const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    unsigned int arg2 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorize(arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorize" "', argument " "2"" of type '" "unsigned int""'");
      } 
      arg2 = static_cast< unsigned int >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_colorize" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorize" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorizeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  unsigned int arg2 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorize" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = static_cast< unsigned int >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_colorize" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorize" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorize(arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    unsigned int arg2 ;
    unsigned int arg3 ;
    unsigned int arg4 ;
    Magick::Color *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorize(arg2,arg3,arg4,(Magick::Color const &)*arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorize" "', argument " "2"" of type '" "unsigned int""'");
      } 
      arg2 = static_cast< unsigned int >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_colorize" "', argument " "3"" of type '" "unsigned int""'");
      } 
      arg3 = static_cast< unsigned int >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_colorize" "', argument " "4"" of type '" "unsigned int""'");
      } 
      arg4 = static_cast< unsigned int >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_colorize" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp5) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorize" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      arg5 = reinterpret_cast< Magick::Color * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorizeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  unsigned int arg4 ;
  Magick::Color *arg5 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorize" "', argument " "2"" of type '" "unsigned int""'");
    } 
    arg2 = static_cast< unsigned int >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_colorize" "', argument " "3"" of type '" "unsigned int""'");
    } 
    arg3 = static_cast< unsigned int >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_colorize" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = static_cast< unsigned int >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_colorize" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp5) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorize" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    arg5 = reinterpret_cast< Magick::Color * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorize(arg2,arg3,arg4,(Magick::Color const &)*arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMapAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    Magick::Color from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorMap(arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMap" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Color(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorMapAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMap__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMap" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Color(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorMap(arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMapAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->colorMap(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMap" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorMapAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorMapAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorMapAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMapAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMapAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMapAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMapAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorMapAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMap__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMap" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMap" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->colorMap(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_colorMap(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMap__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMap__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_colorMap__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_colorMap__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function colorMap.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMatrixAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_colorMatrixAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    double *arg3 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_colorMatrixAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->colorMatrix(arg2,(double const *)arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMatrix" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMatrix" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_colorMatrix" "', argument " "3"" of type '" "double const *""'"); 
      }
      arg3 = reinterpret_cast< double * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_colorMatrixAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorMatrixAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_colorMatrixAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_colorMatrixAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_colorMatrix(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  double *arg3 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_colorMatrix.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_colorMatrix" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_colorMatrix" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_colorMatrix" "', argument " "3"" of type '" "double const *""'"); 
    }
    arg3 = reinterpret_cast< double * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->colorMatrix(arg2,(double const *)arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compareAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->compare((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compare" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compareAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compareAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compare__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compare" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->compare((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compareAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::MetricType arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)(arg1)->compare((Magick::Image const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compare" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_compare" "', argument " "3"" of type '" "Magick::MetricType""'");
      } 
      arg3 = static_cast< Magick::MetricType >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compareAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compareAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compare__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::MetricType arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compare" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_compare" "', argument " "3"" of type '" "Magick::MetricType""'");
    } 
    arg3 = static_cast< Magick::MetricType >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)(arg1)->compare((Magick::Image const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compareChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::Image *arg3 = 0 ;
    Magick::MetricType arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    double result;
    
  public:
    _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (double)(arg1)->compareChannel(arg2,(Magick::Image const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compareChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compareChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_compareChannel" "', argument " "4"" of type '" "Magick::MetricType""'");
      } 
      arg4 = static_cast< Magick::MetricType >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compareChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compareChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::Image *arg3 = 0 ;
  Magick::MetricType arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  double result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compareChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compareChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_compareChannel" "', argument " "4"" of type '" "Magick::MetricType""'");
    } 
    arg4 = static_cast< Magick::MetricType >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (double)(arg1)->compareChannel(arg2,(Magick::Image const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_double  SWIG_NAPI_FROM_CALL_ARGS(static_cast< double >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compareAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::MetricType arg3 ;
    double *arg4 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (arg1)->compare((Magick::Image const &)*arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compare" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_compare" "', argument " "3"" of type '" "Magick::MetricType""'");
      } 
      arg3 = static_cast< Magick::MetricType >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_compare" "', argument " "4"" of type '" "double *""'"); 
      }
      arg4 = reinterpret_cast< double * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compareAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compareAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compareAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compareAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compareAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compareAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compareAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compareAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compareAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compareAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compareAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compare__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::MetricType arg3 ;
  double *arg4 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compare" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compare" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_compare" "', argument " "3"" of type '" "Magick::MetricType""'");
    } 
    arg3 = static_cast< Magick::MetricType >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_compare" "', argument " "4"" of type '" "double *""'"); 
    }
    arg4 = reinterpret_cast< double * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (arg1)->compare((Magick::Image const &)*arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compare(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compare__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compare__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compare__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compare__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compare__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compare__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compare.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compareChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::Image *arg3 = 0 ;
    Magick::MetricType arg4 ;
    double *arg5 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (arg1)->compareChannel(arg2,(Magick::Image const &)*arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compareChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compareChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_compareChannel" "', argument " "4"" of type '" "Magick::MetricType""'");
      } 
      arg4 = static_cast< Magick::MetricType >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_compareChannel" "', argument " "5"" of type '" "double *""'"); 
      }
      arg5 = reinterpret_cast< double * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compareChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compareChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compareChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compareChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compareChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compareChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compareChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compareChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compareChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::Image *arg3 = 0 ;
  Magick::MetricType arg4 ;
  double *arg5 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_compareChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_compareChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_compareChannel" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_compareChannel" "', argument " "4"" of type '" "Magick::MetricType""'");
    } 
    arg4 = static_cast< Magick::MetricType >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_compareChannel" "', argument " "5"" of type '" "double *""'"); 
    }
    arg5 = reinterpret_cast< double * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (arg1)->compareChannel(arg2,(Magick::Image const &)*arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compareChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compareChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compareChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compareChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compareChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compareChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compositeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    Magick::CompositeOperator arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Geometry from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->composite((Magick::Image const &)*arg2,(Magick::Geometry const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Geometry(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "Magick::CompositeOperator""'");
      } 
      arg4 = static_cast< Magick::CompositeOperator >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compositeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composite__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  Magick::CompositeOperator arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Geometry from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Geometry(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "Magick::CompositeOperator""'");
    } 
    arg4 = static_cast< Magick::CompositeOperator >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->composite((Magick::Image const &)*arg2,(Magick::Geometry const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compositeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Geometry from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->composite((Magick::Image const &)*arg2,(Magick::Geometry const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Geometry(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compositeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composite__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Geometry from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Geometry(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->composite((Magick::Image const &)*arg2,(Magick::Geometry const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compositeAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::GravityType arg3 ;
    Magick::CompositeOperator arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->composite((Magick::Image const &)*arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "Magick::GravityType""'");
      } 
      arg3 = static_cast< Magick::GravityType >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "Magick::CompositeOperator""'");
      } 
      arg4 = static_cast< Magick::CompositeOperator >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compositeAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composite__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::GravityType arg3 ;
  Magick::CompositeOperator arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "Magick::GravityType""'");
    } 
    arg3 = static_cast< Magick::GravityType >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "Magick::CompositeOperator""'");
    } 
    arg4 = static_cast< Magick::CompositeOperator >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->composite((Magick::Image const &)*arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compositeAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::GravityType arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->composite((Magick::Image const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "Magick::GravityType""'");
      } 
      arg3 = static_cast< Magick::GravityType >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compositeAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composite__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::GravityType arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "Magick::GravityType""'");
    } 
    arg3 = static_cast< Magick::GravityType >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->composite((Magick::Image const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compositeAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    ::ssize_t arg3 ;
    ::ssize_t arg4 ;
    Magick::CompositeOperator arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->composite((Magick::Image const &)*arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "::ssize_t""'");
      } 
      arg4 = static_cast< ::ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_composite" "', argument " "5"" of type '" "Magick::CompositeOperator""'");
      } 
      arg5 = static_cast< Magick::CompositeOperator >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compositeAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composite__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  ::ssize_t arg3 ;
  ::ssize_t arg4 ;
  Magick::CompositeOperator arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "::ssize_t""'");
    } 
    arg4 = static_cast< ::ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_composite" "', argument " "5"" of type '" "Magick::CompositeOperator""'");
    } 
    arg5 = static_cast< Magick::CompositeOperator >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->composite((Magick::Image const &)*arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_compositeAsync__SWIG_5(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_5_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    ::ssize_t arg3 ;
    ::ssize_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_5_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->composite((Magick::Image const &)*arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "::ssize_t""'");
      } 
      arg4 = static_cast< ::ssize_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_5_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_compositeAsync__SWIG_5.");
  }
  context = new _Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_5_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_compositeAsync__SWIG_5_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_compositeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compositeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compositeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compositeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compositeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compositeAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compositeAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compositeAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compositeAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compositeAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compositeAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_compositeAsync__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_compositeAsync__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function compositeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_composite__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  ::ssize_t arg3 ;
  ::ssize_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_composite" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_composite" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_composite" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_composite" "', argument " "4"" of type '" "::ssize_t""'");
    } 
    arg4 = static_cast< ::ssize_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->composite((Magick::Image const &)*arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_composite(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composite__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composite__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composite__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composite__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composite__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composite__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composite__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composite__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composite__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composite__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_composite__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_composite__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function composite.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_connectedComponentsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_connectedComponentsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_connectedComponentsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->connectedComponents(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_connectedComponents" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_connectedComponents" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_connectedComponentsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_connectedComponentsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_connectedComponentsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_connectedComponentsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_connectedComponents(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_connectedComponents.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_connectedComponents" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_connectedComponents" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->connectedComponents(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_contrastAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_contrastAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_contrastAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->contrast(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_contrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_contrast" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_contrastAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_contrastAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_contrastAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_contrastAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_contrast(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_contrast.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_contrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_contrast" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->contrast(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_contrastStretchAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_contrastStretchAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_contrastStretchAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->contrastStretch(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_contrastStretch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_contrastStretch" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_contrastStretch" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_contrastStretchAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_contrastStretchAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_contrastStretchAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_contrastStretchAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_contrastStretch(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_contrastStretch.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_contrastStretch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_contrastStretch" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_contrastStretch" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->contrastStretch(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_contrastStretchChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_contrastStretchChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_contrastStretchChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->contrastStretchChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_contrastStretchChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_contrastStretchChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_contrastStretchChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_contrastStretchChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_contrastStretchChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_contrastStretchChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_contrastStretchChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->contrastStretchChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_convolveAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_convolveAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    double *arg3 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_convolveAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->convolve(arg2,(double const *)arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_convolve" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_convolve" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_convolve" "', argument " "3"" of type '" "double const *""'"); 
      }
      arg3 = reinterpret_cast< double * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_convolveAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_convolveAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_convolveAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_convolveAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_convolve(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  double *arg3 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_convolve.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_convolve" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_convolve" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_convolve" "', argument " "3"" of type '" "double const *""'"); 
    }
    arg3 = reinterpret_cast< double * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->convolve(arg2,(double const *)arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_copyPixelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_copyPixelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    Magick::Offset *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Geometry from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_copyPixelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->copyPixels((Magick::Image const &)*arg2,(Magick::Geometry const &)*arg3,(Magick::Offset const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_copyPixels" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Geometry(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Offset,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_copyPixels" "', argument " "4"" of type '" "Magick::Offset const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "4"" of type '" "Magick::Offset const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Offset * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_copyPixelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_copyPixelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_copyPixelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_copyPixelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_copyPixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  Magick::Offset *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Geometry from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_copyPixels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_copyPixels" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Geometry(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Offset,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_copyPixels" "', argument " "4"" of type '" "Magick::Offset const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_copyPixels" "', argument " "4"" of type '" "Magick::Offset const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Offset * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->copyPixels((Magick::Image const &)*arg2,(Magick::Geometry const &)*arg3,(Magick::Offset const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cropAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cropAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cropAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->crop((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cropAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cropAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cropAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cropAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_crop(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_crop.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_crop" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->crop((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cycleColormapAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_cycleColormapAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_cycleColormapAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->cycleColormap(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cycleColormap" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cycleColormap" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_cycleColormapAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cycleColormapAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_cycleColormapAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_cycleColormapAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_cycleColormap(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_cycleColormap.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_cycleColormap" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_cycleColormap" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->cycleColormap(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_decipherAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_decipherAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_decipherAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->decipher((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_decipher" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_decipher" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_decipher" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_decipherAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_decipherAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_decipherAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_decipherAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_decipher(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_decipher.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_decipher" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_decipher" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_decipher" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->decipher((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineSetAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    std::string *arg3 = 0 ;
    bool arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    int res3 = SWIG_OLDOBJ ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->defineSet((std::string const &)*arg2,(std::string const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineSet" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_defineSet" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_defineSetAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineSet__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  int res3 = SWIG_OLDOBJ ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineSet" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_defineSet" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->defineSet((std::string const &)*arg2,(std::string const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineSetAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    std::string *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Image const *)arg1)->defineSet((std::string const &)*arg2,(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineSet" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_defineSetAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_defineSetAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_defineSetAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineSetAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineSetAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineSetAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineSetAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function defineSetAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineSet__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineSet" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineSet" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Image const *)arg1)->defineSet((std::string const &)*arg2,(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_defineSet(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineSet__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineSet__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineSet__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineSet__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function defineSet.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineValueAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    std::string *arg3 = 0 ;
    std::string *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    int res3 = SWIG_OLDOBJ ;
    int res4 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->defineValue((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      if (SWIG_IsNewObj(res3)) delete arg3;
      if (SWIG_IsNewObj(res4)) delete arg4;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineValue" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res4 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res4)) {
            SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_defineValue" "', argument " "4"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "4"" of type '" "std::string const &""'"); 
          }
          arg4 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_defineValueAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineValue__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  std::string *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  int res3 = SWIG_OLDOBJ ;
  int res4 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineValue" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res4 = SWIG_AsPtr_std_string(info[2], &ptr);
        if (!SWIG_IsOK(res4)) {
          SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_defineValue" "', argument " "4"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "4"" of type '" "std::string const &""'"); 
        }
        arg4 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->defineValue((std::string const &)*arg2,(std::string const &)*arg3,(std::string const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    if (SWIG_IsNewObj(res4)) delete arg4;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    if (SWIG_IsNewObj(res4)) delete arg4;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  if (SWIG_IsNewObj(res3)) delete arg3;
  if (SWIG_IsNewObj(res4)) delete arg4;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineValueAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    std::string *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->defineValue((std::string const &)*arg2,(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineValue" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_defineValueAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_defineValueAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_defineValueAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineValueAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineValueAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineValueAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineValueAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function defineValueAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_defineValue__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_defineValue" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_defineValue" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->defineValue((std::string const &)*arg2,(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_defineValue(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineValue__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineValue__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_defineValue__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_defineValue__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function defineValue.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_deskewAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_deskewAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_deskewAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->deskew(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_deskew" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_deskew" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_deskewAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_deskewAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_deskewAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_deskewAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_deskew(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_deskew.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_deskew" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_deskew" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->deskew(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_despeckleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_despeckleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_despeckleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->despeckle();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_despeckle" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_despeckleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_despeckleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_despeckleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_despeckleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_despeckle(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_despeckle.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_despeckle" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->despeckle();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_displayAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_displayAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_displayAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->display();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_display" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_displayAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_displayAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_displayAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_displayAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_display(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_display.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_display" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->display();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_distortAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::DistortMethod arg2 ;
    size_t arg3 ;
    double *arg4 = (double *) 0 ;
    bool arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    bool val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->distort(arg2,arg3,(double const *)arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_distort" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_distort" "', argument " "2"" of type '" "Magick::DistortMethod""'");
      } 
      arg2 = static_cast< Magick::DistortMethod >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_distort" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_distort" "', argument " "4"" of type '" "double const *""'"); 
      }
      arg4 = reinterpret_cast< double * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_distort" "', argument " "5"" of type '" "bool""'");
      } 
      arg5 = static_cast< bool >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_distortAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_distortAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_distort__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::DistortMethod arg2 ;
  size_t arg3 ;
  double *arg4 = (double *) 0 ;
  bool arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_distort" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_distort" "', argument " "2"" of type '" "Magick::DistortMethod""'");
    } 
    arg2 = static_cast< Magick::DistortMethod >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_distort" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_distort" "', argument " "4"" of type '" "double const *""'"); 
    }
    arg4 = reinterpret_cast< double * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_distort" "', argument " "5"" of type '" "bool""'");
    } 
    arg5 = static_cast< bool >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->distort(arg2,arg3,(double const *)arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_distortAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::DistortMethod arg2 ;
    size_t arg3 ;
    double *arg4 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->distort(arg2,arg3,(double const *)arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_distort" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_distort" "', argument " "2"" of type '" "Magick::DistortMethod""'");
      } 
      arg2 = static_cast< Magick::DistortMethod >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_distort" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_distort" "', argument " "4"" of type '" "double const *""'"); 
      }
      arg4 = reinterpret_cast< double * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_distortAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_distortAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_distortAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_distortAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_distortAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_distortAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_distortAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_distortAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function distortAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_distort__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::DistortMethod arg2 ;
  size_t arg3 ;
  double *arg4 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_distort" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_distort" "', argument " "2"" of type '" "Magick::DistortMethod""'");
    } 
    arg2 = static_cast< Magick::DistortMethod >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_distort" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_distort" "', argument " "4"" of type '" "double const *""'"); 
    }
    arg4 = reinterpret_cast< double * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->distort(arg2,arg3,(double const *)arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_distort(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_distort__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_distort__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_distort__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_distort__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function distort.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_drawAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Drawable *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->draw((Magick::Drawable const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      {
        delete arg2;
      }
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_draw" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          void *argp;
          // Convert from Magick::DrawableBase as this is what the user has passed
          if (!SWIG_IsOK(SWIG_ConvertPtr(info[0], &argp, SWIGTYPE_p_Magick__DrawableBase, 0))) {
            SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_draw', argument 2 of type 'Magick::Drawable const &'"); 
          }
          if (!argp) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference in method 'Magick_Image_draw', argument 2 of type 'Magick::Drawable const &'"); 
          }
          // Construct the Magick::Drawable
          arg2 = new Magick::Drawable(* reinterpret_cast< Magick::DrawableBase * >(argp));
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_drawAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_drawAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_draw__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Drawable *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_draw" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        void *argp;
        // Convert from Magick::DrawableBase as this is what the user has passed
        if (!SWIG_IsOK(SWIG_ConvertPtr(info[0], &argp, SWIGTYPE_p_Magick__DrawableBase, 0))) {
          SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_draw', argument 2 of type 'Magick::Drawable const &'"); 
        }
        if (!argp) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference in method 'Magick_Image_draw', argument 2 of type 'Magick::Drawable const &'"); 
        }
        // Construct the Magick::Drawable
        arg2 = new Magick::Drawable(* reinterpret_cast< Magick::DrawableBase * >(argp));
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->draw((Magick::Drawable const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    {
      delete arg2;
    }
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    {
      delete arg2;
    }
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  {
    delete arg2;
  }
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_drawAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::vector< Magick::Drawable > *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->draw((std::vector< Magick::Drawable > const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      {
        delete arg2;
      }
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_draw" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          if (info[0].IsArray()) {
            arg2 = new std::vector<Magick::Drawable>;
            Napi::Array array = info[0].As<Napi::Array>();
            for (size_t i = 0; i < array.Length(); i++) {
              Magick::DrawableBase *p = nullptr;
              if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&p), SWIGTYPE_p_Magick__DrawableBase, 0)) || p == nullptr) {
                SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_draw', array element is not a Magick::Drawable");
              }
              // Emplace the newly constructed wrappers in the std::container
              arg2->emplace_back(Magick::Drawable(*p));
            }
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_draw', argument 2 is not an array");
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_drawAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_drawAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_drawAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_drawAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_drawAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_drawAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_drawAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_drawAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function drawAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_draw__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::vector< Magick::Drawable > *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_draw" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        if (info[0].IsArray()) {
          arg2 = new std::vector<Magick::Drawable>;
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::DrawableBase *p = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&p), SWIGTYPE_p_Magick__DrawableBase, 0)) || p == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_draw', array element is not a Magick::Drawable");
            }
            // Emplace the newly constructed wrappers in the std::container
            arg2->emplace_back(Magick::Drawable(*p));
          }
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_draw', argument 2 is not an array");
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->draw((std::vector< Magick::Drawable > const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    {
      delete arg2;
    }
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    {
      delete arg2;
    }
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  {
    delete arg2;
  }
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_draw(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_draw__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_draw__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_draw__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_draw__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function draw.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_edgeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->edge(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_edge" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_edge" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_edgeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_edge__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_edge" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_edge" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->edge(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_edgeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->edge();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_edge" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_edgeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_edgeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_edgeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_edgeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_edgeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_edgeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_edgeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function edgeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_edge__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_edge" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->edge();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_edge(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_edge__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_edge__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_edge__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_edge__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function edge.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_embossAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->emboss(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_emboss" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_emboss" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_emboss" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_embossAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_embossAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_emboss__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_emboss" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_emboss" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_emboss" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->emboss(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_embossAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->emboss(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_emboss" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_emboss" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_embossAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_embossAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_emboss__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_emboss" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_emboss" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->emboss(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_embossAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->emboss();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_emboss" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_embossAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_embossAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_embossAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_embossAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_embossAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_embossAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_embossAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_embossAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_embossAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_embossAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function embossAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_emboss__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_emboss" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->emboss();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_emboss(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_emboss__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_emboss__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_emboss__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_emboss__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_emboss__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_emboss__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function emboss.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_encipherAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_encipherAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_encipherAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->encipher((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_encipher" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_encipher" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_encipher" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_encipherAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_encipherAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_encipherAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_encipherAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_encipher(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_encipher.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_encipher" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_encipher" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_encipher" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->encipher((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_enhanceAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_enhanceAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_enhanceAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->enhance();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_enhance" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_enhanceAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_enhanceAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_enhanceAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_enhanceAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_enhance(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_enhance.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_enhance" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->enhance();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_equalizeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_equalizeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_equalizeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->equalize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_equalize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_equalizeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_equalizeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_equalizeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_equalizeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_equalize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_equalize.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_equalize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->equalize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_eraseAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_eraseAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_eraseAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->erase();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_erase" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_eraseAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_eraseAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_eraseAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_eraseAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_erase(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_erase.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_erase" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->erase();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_evaluateAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::MagickEvaluateOperator arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->evaluate(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_evaluate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_evaluate" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_evaluate" "', argument " "3"" of type '" "Magick::MagickEvaluateOperator""'");
      } 
      arg3 = static_cast< Magick::MagickEvaluateOperator >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_evaluate" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_evaluateAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_evaluate__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::MagickEvaluateOperator arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_evaluate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_evaluate" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_evaluate" "', argument " "3"" of type '" "Magick::MagickEvaluateOperator""'");
    } 
    arg3 = static_cast< Magick::MagickEvaluateOperator >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_evaluate" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->evaluate(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_evaluateAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::MagickFunction arg3 ;
    size_t arg4 ;
    double *arg5 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->evaluate(arg2,arg3,arg4,(double const *)arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_evaluate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_evaluate" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_evaluate" "', argument " "3"" of type '" "Magick::MagickFunction""'");
      } 
      arg3 = static_cast< Magick::MagickFunction >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_evaluate" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_evaluate" "', argument " "5"" of type '" "double const *""'"); 
      }
      arg5 = reinterpret_cast< double * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_evaluateAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_evaluate__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::MagickFunction arg3 ;
  size_t arg4 ;
  double *arg5 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_evaluate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_evaluate" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_evaluate" "', argument " "3"" of type '" "Magick::MagickFunction""'");
    } 
    arg3 = static_cast< Magick::MagickFunction >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_evaluate" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_evaluate" "', argument " "5"" of type '" "double const *""'"); 
    }
    arg5 = reinterpret_cast< double * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->evaluate(arg2,arg3,arg4,(double const *)arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_evaluateAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    ::ssize_t arg3 ;
    ::ssize_t arg4 ;
    size_t arg5 ;
    size_t arg6 ;
    Magick::MagickEvaluateOperator arg7 ;
    double arg8 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    unsigned int val5 ;
    int ecode5 = 0 ;
    unsigned int val6 ;
    int ecode6 = 0 ;
    int val7 ;
    int ecode7 = 0 ;
    double val8 ;
    int ecode8 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->evaluate(arg2,arg3,arg4,arg5,arg6,arg7,arg8);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_evaluate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_evaluate" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_evaluate" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_evaluate" "', argument " "4"" of type '" "::ssize_t""'");
      } 
      arg4 = static_cast< ::ssize_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_evaluate" "', argument " "5"" of type '" "size_t""'");
      } 
      arg5 = static_cast< size_t >(val5);ecode6 = SWIG_AsVal_unsigned_SS_int(info[4], &val6);
      if (!SWIG_IsOK(ecode6)) {
        SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_evaluate" "', argument " "6"" of type '" "size_t""'");
      } 
      arg6 = static_cast< size_t >(val6);ecode7 = SWIG_AsVal_int(info[5], &val7);
      if (!SWIG_IsOK(ecode7)) {
        SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "Magick_Image_evaluate" "', argument " "7"" of type '" "Magick::MagickEvaluateOperator""'");
      } 
      arg7 = static_cast< Magick::MagickEvaluateOperator >(val7);ecode8 = SWIG_AsVal_double(info[6], &val8);
      if (!SWIG_IsOK(ecode8)) {
        SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "Magick_Image_evaluate" "', argument " "8"" of type '" "double""'");
      } 
      arg8 = static_cast< double >(val8);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 7 || static_cast<int>(info.Length()) > 7) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_evaluateAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_evaluateAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_evaluateAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_evaluateAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_evaluateAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_evaluateAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_evaluateAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 7 && static_cast<int>(info.Length()) <= 7) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_evaluateAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_evaluateAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function evaluateAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_evaluate__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  ::ssize_t arg3 ;
  ::ssize_t arg4 ;
  size_t arg5 ;
  size_t arg6 ;
  Magick::MagickEvaluateOperator arg7 ;
  double arg8 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  unsigned int val5 ;
  int ecode5 = 0 ;
  unsigned int val6 ;
  int ecode6 = 0 ;
  int val7 ;
  int ecode7 = 0 ;
  double val8 ;
  int ecode8 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_evaluate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_evaluate" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_evaluate" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_evaluate" "', argument " "4"" of type '" "::ssize_t""'");
    } 
    arg4 = static_cast< ::ssize_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_evaluate" "', argument " "5"" of type '" "size_t""'");
    } 
    arg5 = static_cast< size_t >(val5);ecode6 = SWIG_AsVal_unsigned_SS_int(info[4], &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_evaluate" "', argument " "6"" of type '" "size_t""'");
    } 
    arg6 = static_cast< size_t >(val6);ecode7 = SWIG_AsVal_int(info[5], &val7);
    if (!SWIG_IsOK(ecode7)) {
      SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "Magick_Image_evaluate" "', argument " "7"" of type '" "Magick::MagickEvaluateOperator""'");
    } 
    arg7 = static_cast< Magick::MagickEvaluateOperator >(val7);ecode8 = SWIG_AsVal_double(info[6], &val8);
    if (!SWIG_IsOK(ecode8)) {
      SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "Magick_Image_evaluate" "', argument " "8"" of type '" "double""'");
    } 
    arg8 = static_cast< double >(val8);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->evaluate(arg2,arg3,arg4,arg5,arg6,arg7,arg8);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_evaluate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_evaluate__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_evaluate__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_evaluate__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_evaluate__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 7 && static_cast<int>(info.Length()) <= 7) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_evaluate__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_evaluate__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function evaluate.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extentAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->extent((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_extentAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_extentAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extent__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->extent((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extentAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->extent((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_extentAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_extentAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extent__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->extent((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extentAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    Magick::GravityType arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->extent((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_extent" "', argument " "4"" of type '" "Magick::GravityType""'");
      } 
      arg4 = static_cast< Magick::GravityType >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_extentAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_extentAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extent__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  Magick::GravityType arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_extent" "', argument " "4"" of type '" "Magick::GravityType""'");
    } 
    arg4 = static_cast< Magick::GravityType >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->extent((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extentAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::GravityType arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->extent((Magick::Geometry const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::GravityType""'");
      } 
      arg3 = static_cast< Magick::GravityType >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_extentAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_extentAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_extentAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_extentAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extentAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extentAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extentAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extentAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extentAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extentAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extentAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extentAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function extentAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_extent__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::GravityType arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_extent" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_extent" "', argument " "3"" of type '" "Magick::GravityType""'");
    } 
    arg3 = static_cast< Magick::GravityType >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->extent((Magick::Geometry const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_extent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extent__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extent__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extent__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extent__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extent__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extent__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_extent__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_extent__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function extent.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_flipAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_flipAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_flipAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->flip();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_flip" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_flipAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_flipAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_flipAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_flipAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_flip(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_flip.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_flip" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->flip();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlphaAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    unsigned int arg4 ;
    bool arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    bool val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillAlpha(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
      } 
      arg4 = static_cast< unsigned int >(val4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "bool""'");
      } 
      arg5 = static_cast< bool >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillAlphaAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlpha__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  unsigned int arg4 ;
  bool arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = static_cast< unsigned int >(val4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "bool""'");
    } 
    arg5 = static_cast< bool >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillAlpha(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlphaAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    unsigned int arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillAlpha(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
      } 
      arg4 = static_cast< unsigned int >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillAlphaAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlpha__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  unsigned int arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = static_cast< unsigned int >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillAlpha(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlphaAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ssize_t arg2 ;
    ssize_t arg3 ;
    unsigned int arg4 ;
    Magick::Color *arg5 = 0 ;
    bool arg6 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    bool val6 ;
    int ecode6 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillAlpha(arg2,arg3,arg4,(Magick::Color const &)*arg5,arg6);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "ssize_t""'");
      } 
      arg2 = static_cast< ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "ssize_t""'");
      } 
      arg3 = static_cast< ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
      } 
      arg4 = static_cast< unsigned int >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp5) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      arg5 = reinterpret_cast< Magick::Color * >(argp5);ecode6 = SWIG_AsVal_bool(info[4], &val6);
      if (!SWIG_IsOK(ecode6)) {
        SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_floodFillAlpha" "', argument " "6"" of type '" "bool""'");
      } 
      arg6 = static_cast< bool >(val6);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillAlphaAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlpha__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ssize_t arg2 ;
  ssize_t arg3 ;
  unsigned int arg4 ;
  Magick::Color *arg5 = 0 ;
  bool arg6 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  bool val6 ;
  int ecode6 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "ssize_t""'");
    } 
    arg2 = static_cast< ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "ssize_t""'");
    } 
    arg3 = static_cast< ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = static_cast< unsigned int >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp5) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    arg5 = reinterpret_cast< Magick::Color * >(argp5);ecode6 = SWIG_AsVal_bool(info[4], &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_floodFillAlpha" "', argument " "6"" of type '" "bool""'");
    } 
    arg6 = static_cast< bool >(val6);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillAlpha(arg2,arg3,arg4,(Magick::Color const &)*arg5,arg6);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlphaAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ssize_t arg2 ;
    ssize_t arg3 ;
    unsigned int arg4 ;
    Magick::Color *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillAlpha(arg2,arg3,arg4,(Magick::Color const &)*arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "ssize_t""'");
      } 
      arg2 = static_cast< ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "ssize_t""'");
      } 
      arg3 = static_cast< ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
      } 
      arg4 = static_cast< unsigned int >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp5) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      arg5 = reinterpret_cast< Magick::Color * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillAlphaAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillAlphaAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_floodFillAlphaAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlphaAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlphaAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlphaAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlphaAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlphaAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlphaAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlphaAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlphaAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function floodFillAlphaAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillAlpha__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ssize_t arg2 ;
  ssize_t arg3 ;
  unsigned int arg4 ;
  Magick::Color *arg5 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillAlpha" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillAlpha" "', argument " "2"" of type '" "ssize_t""'");
    } 
    arg2 = static_cast< ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillAlpha" "', argument " "3"" of type '" "ssize_t""'");
    } 
    arg3 = static_cast< ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillAlpha" "', argument " "4"" of type '" "unsigned int""'");
    } 
    arg4 = static_cast< unsigned int >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp5) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillAlpha" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    arg5 = reinterpret_cast< Magick::Color * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillAlpha(arg2,arg3,arg4,(Magick::Color const &)*arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_floodFillAlpha(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlpha__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlpha__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlpha__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlpha__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlpha__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlpha__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillAlpha__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillAlpha__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function floodFillAlpha.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    bool arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Color from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Color(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Color(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Color from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Color(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Color(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Color *arg4 = 0 ;
    bool arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    Magick::Color from_string_temp4 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    bool val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[2].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg4
            std::string *arg4;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[2], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg4 = ptr;
            };
            // Construct the object from this string
            from_string_temp4 = Magick::Color(*arg4);
            // The string is not needed anymore
            delete arg4;
          }
          // We then assign the local temporary arg4 to the real arg4
          arg4 = &from_string_temp4;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg4 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      ecode5 = SWIG_AsVal_bool(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "bool""'");
      } 
      arg5 = static_cast< bool >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Color *arg4 = 0 ;
  bool arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::Color from_string_temp4 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[2].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg4
          std::string *arg4;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[2], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg4 = ptr;
          };
          // Construct the object from this string
          from_string_temp4 = Magick::Color(*arg4);
          // The string is not needed anymore
          delete arg4;
        }
        // We then assign the local temporary arg4 to the real arg4
        arg4 = &from_string_temp4;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg4 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    ecode5 = SWIG_AsVal_bool(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "bool""'");
    } 
    arg5 = static_cast< bool >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Color *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    Magick::Color from_string_temp4 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[2].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg4
            std::string *arg4;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[2], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg4 = ptr;
            };
            // Construct the object from this string
            from_string_temp4 = Magick::Color(*arg4);
            // The string is not needed anymore
            delete arg4;
          }
          // We then assign the local temporary arg4 to the real arg4
          arg4 = &from_string_temp4;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg4 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Color *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::Color from_string_temp4 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[2].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg4
          std::string *arg4;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[2], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg4 = ptr;
          };
          // Construct the object from this string
          from_string_temp4 = Magick::Color(*arg4);
          // The string is not needed anymore
          delete arg4;
        }
        // We then assign the local temporary arg4 to the real arg4
        arg4 = &from_string_temp4;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg4 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    Magick::Color *arg4 = 0 ;
    bool arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Color from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    bool val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Color(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "bool""'");
      } 
      arg5 = static_cast< bool >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  bool arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Color(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "bool""'");
    } 
    arg5 = static_cast< bool >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_5(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_5_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    Magick::Color *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Color from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_5_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Color(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Color * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_5_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_5.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_5_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_5_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Color(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Color * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_6(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_6_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Color *arg4 = 0 ;
    Magick::Color *arg5 = 0 ;
    bool arg6 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    Magick::Color from_string_temp4 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    bool val6 ;
    int ecode6 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_6_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4,(Magick::Color const &)*arg5,arg6);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[2].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg4
            std::string *arg4;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[2], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg4 = ptr;
            };
            // Construct the object from this string
            from_string_temp4 = Magick::Color(*arg4);
            // The string is not needed anymore
            delete arg4;
          }
          // We then assign the local temporary arg4 to the real arg4
          arg4 = &from_string_temp4;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg4 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp5) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      arg5 = reinterpret_cast< Magick::Color * >(argp5);ecode6 = SWIG_AsVal_bool(info[4], &val6);
      if (!SWIG_IsOK(ecode6)) {
        SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_floodFillColor" "', argument " "6"" of type '" "bool""'");
      } 
      arg6 = static_cast< bool >(val6);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_6_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_6.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_6_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_6_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Color *arg4 = 0 ;
  Magick::Color *arg5 = 0 ;
  bool arg6 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::Color from_string_temp4 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  bool val6 ;
  int ecode6 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[2].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg4
          std::string *arg4;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[2], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg4 = ptr;
          };
          // Construct the object from this string
          from_string_temp4 = Magick::Color(*arg4);
          // The string is not needed anymore
          delete arg4;
        }
        // We then assign the local temporary arg4 to the real arg4
        arg4 = &from_string_temp4;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg4 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp5) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    arg5 = reinterpret_cast< Magick::Color * >(argp5);ecode6 = SWIG_AsVal_bool(info[4], &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_floodFillColor" "', argument " "6"" of type '" "bool""'");
    } 
    arg6 = static_cast< bool >(val6);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4,(Magick::Color const &)*arg5,arg6);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColorAsync__SWIG_7(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_7_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Color *arg4 = 0 ;
    Magick::Color *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    Magick::Color from_string_temp4 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_7_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4,(Magick::Color const &)*arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[2].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg4
            std::string *arg4;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[2], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg4 = ptr;
            };
            // Construct the object from this string
            from_string_temp4 = Magick::Color(*arg4);
            // The string is not needed anymore
            delete arg4;
          }
          // We then assign the local temporary arg4 to the real arg4
          arg4 = &from_string_temp4;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg4 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp5) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      arg5 = reinterpret_cast< Magick::Color * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_7_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillColorAsync__SWIG_7.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_7_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillColorAsync__SWIG_7_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_floodFillColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColorAsync__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColorAsync__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function floodFillColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillColor__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Color *arg4 = 0 ;
  Magick::Color *arg5 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::Color from_string_temp4 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillColor" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillColor" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[2].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg4
          std::string *arg4;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[2], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg4 = ptr;
          };
          // Construct the object from this string
          from_string_temp4 = Magick::Color(*arg4);
          // The string is not needed anymore
          delete arg4;
        }
        // We then assign the local temporary arg4 to the real arg4
        arg4 = &from_string_temp4;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg4 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp5) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillColor" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    arg5 = reinterpret_cast< Magick::Color * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillColor(arg2,arg3,(Magick::Color const &)*arg4,(Magick::Color const &)*arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_floodFillColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillColor__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillColor__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function floodFillColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Image *arg3 = 0 ;
    bool arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Image *arg3 = 0 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Image *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Image * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Image *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Image * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Image *arg4 = 0 ;
    bool arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    bool val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Image * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "bool""'");
      } 
      arg5 = static_cast< bool >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[2].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[2].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Image *arg4 = 0 ;
  bool arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Image * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "bool""'");
    } 
    arg5 = static_cast< bool >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[2].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[2].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Image *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Image * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[2].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[2].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Image *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Image * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[2].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[2].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Image *arg3 = 0 ;
    Magick::Color *arg4 = 0 ;
    bool arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    bool val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3,(Magick::Color const &)*arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Image * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "bool""'");
      } 
      arg5 = static_cast< bool >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Image *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  bool arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Image * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "bool""'");
    } 
    arg5 = static_cast< bool >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3,(Magick::Color const &)*arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_5(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_5_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Image *arg3 = 0 ;
    Magick::Color *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_5_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3,(Magick::Color const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Image * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Color * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_5_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_5.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_5_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_5_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Image *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "Magick::Image const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Image * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Color * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture((Magick::Geometry const &)*arg2,(Magick::Image const &)*arg3,(Magick::Color const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_6(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_6_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Image *arg4 = 0 ;
    Magick::Color *arg5 = 0 ;
    bool arg6 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    bool val6 ;
    int ecode6 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_6_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4,(Magick::Color const &)*arg5,arg6);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Image * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp5) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      arg5 = reinterpret_cast< Magick::Color * >(argp5);ecode6 = SWIG_AsVal_bool(info[4], &val6);
      if (!SWIG_IsOK(ecode6)) {
        SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_floodFillTexture" "', argument " "6"" of type '" "bool""'");
      } 
      arg6 = static_cast< bool >(val6);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[2].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[2].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_6_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_6.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_6_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_6_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Image *arg4 = 0 ;
  Magick::Color *arg5 = 0 ;
  bool arg6 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  bool val6 ;
  int ecode6 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Image * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp5) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    arg5 = reinterpret_cast< Magick::Color * >(argp5);ecode6 = SWIG_AsVal_bool(info[4], &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_floodFillTexture" "', argument " "6"" of type '" "bool""'");
    } 
    arg6 = static_cast< bool >(val6);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[2].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[2].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4,(Magick::Color const &)*arg5,arg6);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTextureAsync__SWIG_7(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_7_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Image *arg4 = 0 ;
    Magick::Color *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_7_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4,(Magick::Color const &)*arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Image * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp5) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
      }
      arg5 = reinterpret_cast< Magick::Color * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[2].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[2].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_7_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_floodFillTextureAsync__SWIG_7.");
  }
  context = new _Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_7_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_floodFillTextureAsync__SWIG_7_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_floodFillTextureAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTextureAsync__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTextureAsync__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function floodFillTextureAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_floodFillTexture__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Image *arg4 = 0 ;
  Magick::Color *arg5 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_floodFillTexture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_floodFillTexture" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_floodFillTexture" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "4"" of type '" "Magick::Image const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Image * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp5) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_floodFillTexture" "', argument " "5"" of type '" "Magick::Color const &""'"); 
    }
    arg5 = reinterpret_cast< Magick::Color * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[2].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[2].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->floodFillTexture(arg2,arg3,(Magick::Image const &)*arg4,(Magick::Color const &)*arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_floodFillTexture(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_floodFillTexture__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_floodFillTexture__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function floodFillTexture.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_flopAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_flopAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_flopAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->flop();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_flop" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_flopAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_flopAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_flopAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_flopAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_flop(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_flop.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_flop" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->flop();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontTypeMetricsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontTypeMetricsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    Magick::TypeMetric *arg3 = (Magick::TypeMetric *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontTypeMetricsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fontTypeMetrics((std::string const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontTypeMetrics" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fontTypeMetrics" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fontTypeMetrics" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_fontTypeMetrics" "', argument " "3"" of type '" "Magick::TypeMetric *""'"); 
      }
      arg3 = reinterpret_cast< Magick::TypeMetric * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontTypeMetricsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontTypeMetricsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontTypeMetricsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontTypeMetricsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontTypeMetrics(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  Magick::TypeMetric *arg3 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontTypeMetrics.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontTypeMetrics" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fontTypeMetrics" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fontTypeMetrics" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_fontTypeMetrics" "', argument " "3"" of type '" "Magick::TypeMetric *""'"); 
    }
    arg3 = reinterpret_cast< Magick::TypeMetric * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fontTypeMetrics((std::string const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontTypeMetricsMultilineAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fontTypeMetricsMultilineAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    Magick::TypeMetric *arg3 = (Magick::TypeMetric *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fontTypeMetricsMultilineAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fontTypeMetricsMultiline((std::string const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "3"" of type '" "Magick::TypeMetric *""'"); 
      }
      arg3 = reinterpret_cast< Magick::TypeMetric * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fontTypeMetricsMultilineAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontTypeMetricsMultilineAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fontTypeMetricsMultilineAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fontTypeMetricsMultilineAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fontTypeMetricsMultiline(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  Magick::TypeMetric *arg3 = (Magick::TypeMetric *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fontTypeMetricsMultiline.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__TypeMetric, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_fontTypeMetricsMultiline" "', argument " "3"" of type '" "Magick::TypeMetric *""'"); 
    }
    arg3 = reinterpret_cast< Magick::TypeMetric * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fontTypeMetricsMultiline((std::string const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frameAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->frame((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_frameAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_frameAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frame__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->frame((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frameAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->frame();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_frameAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_frameAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frame__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->frame();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frameAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    ::ssize_t arg4 ;
    ::ssize_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->frame(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_frame" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_frame" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_frame" "', argument " "4"" of type '" "::ssize_t""'");
      } 
      arg4 = static_cast< ::ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_frame" "', argument " "5"" of type '" "::ssize_t""'");
      } 
      arg5 = static_cast< ::ssize_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_frameAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_frameAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frame__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  ::ssize_t arg4 ;
  ::ssize_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_frame" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_frame" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_frame" "', argument " "4"" of type '" "::ssize_t""'");
    } 
    arg4 = static_cast< ::ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_frame" "', argument " "5"" of type '" "::ssize_t""'");
    } 
    arg5 = static_cast< ::ssize_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->frame(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frameAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    ::ssize_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->frame(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_frame" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_frame" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_frame" "', argument " "4"" of type '" "::ssize_t""'");
      } 
      arg4 = static_cast< ::ssize_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_frameAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_frameAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frame__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  ::ssize_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_frame" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_frame" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_frame" "', argument " "4"" of type '" "::ssize_t""'");
    } 
    arg4 = static_cast< ::ssize_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->frame(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frameAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->frame(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_frame" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_frame" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_frameAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_frameAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_frameAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_frameAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frameAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frameAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frameAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frameAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frameAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frameAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frameAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frameAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frameAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frameAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function frameAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_frame__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_frame" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_frame" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_frame" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->frame(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_frame(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frame__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frame__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frame__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frame__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frame__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frame__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frame__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frame__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_frame__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_frame__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function frame.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fxAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fx(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fx" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_fx" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fxAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fxAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fx__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fx" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_fx" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fx(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fxAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    Magick::ChannelType arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fx(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fx" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_fx" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_fx" "', argument " "3"" of type '" "Magick::ChannelType""'");
      } 
      arg3 = static_cast< Magick::ChannelType >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_fxAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_fxAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_fxAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fxAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fxAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fxAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fxAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fxAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fxAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_fx__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  Magick::ChannelType arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_fx" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_fx" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_fx" "', argument " "3"" of type '" "Magick::ChannelType""'");
    } 
    arg3 = static_cast< Magick::ChannelType >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fx(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_fx(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fx__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fx__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_fx__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_fx__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fx.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gammaAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->gamma(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gamma" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gamma" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gammaAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gamma__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gamma" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gamma" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->gamma(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gammaAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->gamma(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gamma" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gamma" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_gamma" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_gamma" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gammaAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_gammaAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_gammaAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gammaAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gammaAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gammaAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gammaAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gammaAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gammaAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gammaAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gamma__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gamma" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gamma" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_gamma" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_gamma" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->gamma(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_gamma(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gamma__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gamma__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gamma__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gamma__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_gamma__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_gamma__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gamma.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gaussianBlurAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_gaussianBlurAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_gaussianBlurAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->gaussianBlur(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gaussianBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gaussianBlur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_gaussianBlur" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_gaussianBlurAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gaussianBlurAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_gaussianBlurAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_gaussianBlurAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gaussianBlur(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gaussianBlur.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gaussianBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gaussianBlur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_gaussianBlur" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->gaussianBlur(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gaussianBlurChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_gaussianBlurChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_gaussianBlurChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->gaussianBlurChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_gaussianBlurChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gaussianBlurChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_gaussianBlurChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_gaussianBlurChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_gaussianBlurChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_gaussianBlurChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_gaussianBlurChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->gaussianBlurChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getConstPixelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_getConstPixelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    size_t arg4 ;
    size_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    unsigned int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Quantum *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_getConstPixelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::Quantum *)((Magick::Image const *)arg1)->getConstPixels(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_float, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getConstPixels" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_getConstPixels" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_getConstPixels" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_getConstPixels" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_getConstPixels" "', argument " "5"" of type '" "size_t""'");
      } 
      arg5 = static_cast< size_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_getConstPixelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getConstPixelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_getConstPixelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_getConstPixelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getConstPixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  size_t arg4 ;
  size_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  unsigned int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getConstPixels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getConstPixels" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_getConstPixels" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_getConstPixels" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_getConstPixels" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_getConstPixels" "', argument " "5"" of type '" "size_t""'");
    } 
    arg5 = static_cast< size_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum *)((Magick::Image const *)arg1)->getConstPixels(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_float, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getConstMetacontentAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_getConstMetacontentAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    void *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_getConstMetacontentAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (void *)((Magick::Image const *)arg1)->getConstMetacontent();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getConstMetacontent" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_getConstMetacontentAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getConstMetacontentAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_getConstMetacontentAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_getConstMetacontentAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getConstMetacontent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  void *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getConstMetacontent.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getConstMetacontent" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (void *)((Magick::Image const *)arg1)->getConstMetacontent();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getMetacontentAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_getMetacontentAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    void *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_getMetacontentAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (void *)(arg1)->getMetacontent();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getMetacontent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_getMetacontentAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getMetacontentAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_getMetacontentAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_getMetacontentAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getMetacontent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  void *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getMetacontent.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getMetacontent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (void *)(arg1)->getMetacontent();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getPixelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_getPixelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    size_t arg4 ;
    size_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    unsigned int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Quantum *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_getPixelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::Quantum *)(arg1)->getPixels(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_float, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_getPixels" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_getPixels" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_getPixels" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_getPixels" "', argument " "5"" of type '" "size_t""'");
      } 
      arg5 = static_cast< size_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_getPixelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getPixelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_getPixelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_getPixelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_getPixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  size_t arg4 ;
  size_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  unsigned int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_getPixels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_getPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_getPixels" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_getPixels" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_getPixels" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_getPixels" "', argument " "5"" of type '" "size_t""'");
    } 
    arg5 = static_cast< size_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum *)(arg1)->getPixels(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_float, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_grayscaleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_grayscaleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::PixelIntensityMethod arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_grayscaleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->grayscale(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_grayscale" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_grayscale" "', argument " "2"" of type '" "Magick::PixelIntensityMethod""'");
      } 
      arg2 = static_cast< Magick::PixelIntensityMethod >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_grayscaleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_grayscaleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_grayscaleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_grayscaleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_grayscale(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::PixelIntensityMethod arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_grayscale.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_grayscale" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_grayscale" "', argument " "2"" of type '" "Magick::PixelIntensityMethod""'");
    } 
    arg2 = static_cast< Magick::PixelIntensityMethod >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->grayscale(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_haldClutAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_haldClutAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_haldClutAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->haldClut((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_haldClut" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_haldClut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_haldClut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_haldClutAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_haldClutAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_haldClutAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_haldClutAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_haldClut(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_haldClut.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_haldClut" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_haldClut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_haldClut" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->haldClut((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_houghLineAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    size_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->houghLine(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_houghLine" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_houghLine" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_houghLine" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_houghLine" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_houghLineAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_houghLine__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  size_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_houghLine" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_houghLine" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_houghLine" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_houghLine" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->houghLine(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_houghLineAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->houghLine(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_houghLine" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_houghLine" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_houghLine" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_houghLineAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_houghLineAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_houghLineAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_houghLineAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_houghLineAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_houghLineAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_houghLineAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function houghLineAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_houghLine__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_houghLine" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_houghLine" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_houghLine" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->houghLine(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_houghLine(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_houghLine__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_houghLine__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_houghLine__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_houghLine__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function houghLine.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_identifyTypeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_identifyTypeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ImageType result;
    
  public:
    _Magick_Image__wrap_Magick_Image_identifyTypeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::ImageType)((Magick::Image const *)arg1)->identifyType();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_identifyType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_identifyTypeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_identifyTypeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_identifyTypeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_identifyTypeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_identifyType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ImageType result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_identifyType.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_identifyType" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::ImageType)((Magick::Image const *)arg1)->identifyType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_implodeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_implodeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_implodeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->implode(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_implode" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_implode" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_implodeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_implodeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_implodeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_implodeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_implode(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_implode.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_implode" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_implode" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->implode(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->inverseFourierTransform((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_inverseFourierTransform__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->inverseFourierTransform((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    bool arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    bool val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->inverseFourierTransform((Magick::Image const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "3"" of type '" "bool""'");
      } 
      arg3 = static_cast< bool >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_inverseFourierTransformAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_inverseFourierTransformAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function inverseFourierTransformAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_inverseFourierTransform__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_inverseFourierTransform" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_inverseFourierTransform" "', argument " "3"" of type '" "bool""'");
    } 
    arg3 = static_cast< bool >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->inverseFourierTransform((Magick::Image const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_inverseFourierTransform(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_inverseFourierTransform__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_inverseFourierTransform__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_inverseFourierTransform__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_inverseFourierTransform__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function inverseFourierTransform.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->kuwahara(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwahara" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwahara" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_kuwahara" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_kuwaharaAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwahara__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwahara" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwahara" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_kuwahara" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->kuwahara(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->kuwahara(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwahara" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwahara" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_kuwaharaAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwahara__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwahara" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwahara" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->kuwahara(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->kuwahara();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwahara" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_kuwaharaAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_kuwaharaAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_kuwaharaAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function kuwaharaAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwahara__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwahara" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->kuwahara();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_kuwahara(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwahara__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwahara__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwahara__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwahara__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwahara__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwahara__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function kuwahara.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->kuwaharaChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->kuwaharaChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->kuwaharaChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->kuwaharaChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->kuwaharaChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_kuwaharaChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaChannelAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function kuwaharaChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_kuwaharaChannel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_kuwaharaChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->kuwaharaChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_kuwaharaChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_kuwaharaChannel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_kuwaharaChannel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function kuwaharaChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->level(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_level" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_level" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_level" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_level" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_level__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_level" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_level" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_level" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_level" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->level(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->level(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_level" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_level" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_level" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_level__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_level" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_level" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_level" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->level(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_level(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_level__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_level__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_level__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_level__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function level.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    double val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelChannel(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_levelChannel" "', argument " "5"" of type '" "double""'");
      } 
      arg5 = static_cast< double >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_levelChannel" "', argument " "5"" of type '" "double""'");
    } 
    arg5 = static_cast< double >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelChannel(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColorsAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    bool arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelColors((Magick::Color const &)*arg2,(Magick::Color const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColors" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelColors" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelColorsAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColors__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColors" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelColors" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelColors((Magick::Color const &)*arg2,(Magick::Color const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColorsAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelColors((Magick::Color const &)*arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColors" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelColorsAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelColorsAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelColorsAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColorsAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColorsAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColorsAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColorsAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelColorsAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColors__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColors" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColors" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelColors((Magick::Color const &)*arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelColors(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColors__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColors__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColors__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColors__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelColors.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColorsChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::Color *arg3 = 0 ;
    Magick::Color *arg4 = 0 ;
    bool arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    bool val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelColorsChannel(arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColorsChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelColorsChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_levelColorsChannel" "', argument " "5"" of type '" "bool""'");
      } 
      arg5 = static_cast< bool >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelColorsChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColorsChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::Color *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  bool arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColorsChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelColorsChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_levelColorsChannel" "', argument " "5"" of type '" "bool""'");
    } 
    arg5 = static_cast< bool >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelColorsChannel(arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColorsChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::Color *arg3 = 0 ;
    Magick::Color *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelColorsChannel(arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColorsChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelColorsChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp4) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
      }
      arg4 = reinterpret_cast< Magick::Color * >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelColorsChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelColorsChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelColorsChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColorsChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColorsChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColorsChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColorsChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelColorsChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelColorsChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::Color *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelColorsChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelColorsChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);res4 = SWIG_ConvertPtr(info[2], &argp4, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_levelColorsChannel" "', argument " "4"" of type '" "Magick::Color const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Color * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelColorsChannel(arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelColorsChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColorsChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColorsChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelColorsChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelColorsChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelColorsChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelize(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelize" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelize" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelize" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelizeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelize" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelize" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelize" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelize(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelize(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelize" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelize" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelizeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelize" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelize" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelize(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelizeChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    double val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelizeChannel(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelizeChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelizeChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelizeChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelizeChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_levelizeChannel" "', argument " "5"" of type '" "double""'");
      } 
      arg5 = static_cast< double >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelizeChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelizeChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelizeChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelizeChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelizeChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelizeChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_levelizeChannel" "', argument " "5"" of type '" "double""'");
    } 
    arg5 = static_cast< double >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelizeChannel(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelizeChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->levelizeChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelizeChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelizeChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelizeChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelizeChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_levelizeChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_levelizeChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelizeChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelizeChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelizeChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelizeChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelizeChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelizeChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_levelizeChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_levelizeChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_levelizeChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_levelizeChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_levelizeChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->levelizeChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_levelizeChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelizeChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelizeChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_levelizeChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_levelizeChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function levelizeChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_linearStretchAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_linearStretchAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_linearStretchAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->linearStretch(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_linearStretch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_linearStretch" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_linearStretch" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_linearStretchAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_linearStretchAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_linearStretchAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_linearStretchAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_linearStretch(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_linearStretch.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_linearStretch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_linearStretch" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_linearStretch" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->linearStretch(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_liquidRescaleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_liquidRescaleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_liquidRescaleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->liquidRescale((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_liquidRescaleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_liquidRescaleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_liquidRescaleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_liquidRescaleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_liquidRescale(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_liquidRescale.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_liquidRescale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->liquidRescale((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_localContrastAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_localContrastAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_localContrastAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->localContrast(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_localContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_localContrast" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_localContrast" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_localContrastAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_localContrastAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_localContrastAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_localContrastAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_localContrast(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_localContrast.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_localContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_localContrast" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_localContrast" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->localContrast(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_localContrastChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_localContrastChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_localContrastChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->localContrastChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_localContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_localContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_localContrastChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_localContrastChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_localContrastChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_localContrastChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_localContrastChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_localContrastChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_localContrastChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_localContrastChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_localContrastChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_localContrastChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_localContrastChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_localContrastChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->localContrastChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_magnifyAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_magnifyAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_magnifyAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->magnify();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_magnify" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_magnifyAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_magnifyAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_magnifyAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_magnifyAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_magnify(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_magnify.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_magnify" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->magnify();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_mapAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    bool arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    bool val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->map((Magick::Image const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_map" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_map" "', argument " "3"" of type '" "bool""'");
      } 
      arg3 = static_cast< bool >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_mapAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_mapAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_map__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_map" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_map" "', argument " "3"" of type '" "bool""'");
    } 
    arg3 = static_cast< bool >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->map((Magick::Image const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_mapAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->map((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_map" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_mapAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_mapAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_mapAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_mapAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_mapAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_mapAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_mapAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_mapAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function mapAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_map__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_map" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_map" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->map((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_map(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_map__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_map__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_map__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_map__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function map.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_meanShiftAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_meanShiftAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_meanShiftAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->meanShift(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_meanShift" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_meanShift" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_meanShift" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_meanShift" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_meanShiftAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_meanShiftAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_meanShiftAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_meanShiftAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_meanShift(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_meanShift.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_meanShift" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_meanShift" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_meanShift" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_meanShift" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->meanShift(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_medianFilterAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->medianFilter(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_medianFilter" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_medianFilter" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_medianFilterAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_medianFilter__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_medianFilter" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_medianFilter" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->medianFilter(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_medianFilterAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->medianFilter();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_medianFilter" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_medianFilterAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_medianFilterAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_medianFilterAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_medianFilterAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_medianFilterAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_medianFilterAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_medianFilterAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function medianFilterAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_medianFilter__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_medianFilter" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->medianFilter();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_medianFilter(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_medianFilter__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_medianFilter__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_medianFilter__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_medianFilter__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function medianFilter.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_minifyAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_minifyAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_minifyAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->minify();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_minify" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_minifyAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_minifyAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_minifyAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_minifyAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_minify(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_minify.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_minify" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->minify();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modulateAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_modulateAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_modulateAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->modulate(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modulate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_modulate" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_modulate" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_modulate" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_modulateAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_modulateAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_modulateAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_modulateAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modulate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_modulate.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modulate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_modulate" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_modulate" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_modulate" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->modulate(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_momentsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_momentsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ImageMoments result;
    
  public:
    _Magick_Image__wrap_Magick_Image_momentsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->moments();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::ImageMoments(result)), SWIGTYPE_p_Magick__ImageMoments, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_moments" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_momentsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_momentsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_momentsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_momentsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_moments(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ImageMoments result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_moments.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_moments" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->moments();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::ImageMoments(result)), SWIGTYPE_p_Magick__ImageMoments, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::MorphologyMethod arg2 ;
    std::string arg3 ;
    ssize_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphology(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg2 = static_cast< Magick::MorphologyMethod >(val2);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "std::string const""'"); 
          }
          arg3 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_morphology" "', argument " "4"" of type '" "ssize_t""'");
      } 
      arg4 = static_cast< ssize_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphology__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::MorphologyMethod arg2 ;
  std::string arg3 ;
  ssize_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg2 = static_cast< Magick::MorphologyMethod >(val2);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "std::string const""'"); 
        }
        arg3 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_morphology" "', argument " "4"" of type '" "ssize_t""'");
    } 
    arg4 = static_cast< ssize_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphology(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::MorphologyMethod arg2 ;
    std::string arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphology(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg2 = static_cast< Magick::MorphologyMethod >(val2);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "std::string const""'"); 
          }
          arg3 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphology__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::MorphologyMethod arg2 ;
  std::string arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg2 = static_cast< Magick::MorphologyMethod >(val2);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "std::string const""'"); 
        }
        arg3 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphology(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::MorphologyMethod arg2 ;
    Magick::KernelInfoType arg3 ;
    std::string arg4 ;
    ssize_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphology(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg2 = static_cast< Magick::MorphologyMethod >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "Magick::KernelInfoType""'");
      } 
      arg3 = static_cast< Magick::KernelInfoType >(val3);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "4"" of type '" "std::string const""'"); 
          }
          arg4 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      ecode5 = SWIG_AsVal_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_morphology" "', argument " "5"" of type '" "ssize_t""'");
      } 
      arg5 = static_cast< ssize_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphology__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::MorphologyMethod arg2 ;
  Magick::KernelInfoType arg3 ;
  std::string arg4 ;
  ssize_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg2 = static_cast< Magick::MorphologyMethod >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "Magick::KernelInfoType""'");
    } 
    arg3 = static_cast< Magick::KernelInfoType >(val3);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[2], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "4"" of type '" "std::string const""'"); 
        }
        arg4 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    ecode5 = SWIG_AsVal_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_morphology" "', argument " "5"" of type '" "ssize_t""'");
    } 
    arg5 = static_cast< ssize_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphology(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::MorphologyMethod arg2 ;
    Magick::KernelInfoType arg3 ;
    std::string arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphology(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg2 = static_cast< Magick::MorphologyMethod >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "Magick::KernelInfoType""'");
      } 
      arg3 = static_cast< Magick::KernelInfoType >(val3);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "4"" of type '" "std::string const""'"); 
          }
          arg4 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_morphologyAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function morphologyAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphology__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::MorphologyMethod arg2 ;
  Magick::KernelInfoType arg3 ;
  std::string arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphology" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphology" "', argument " "2"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg2 = static_cast< Magick::MorphologyMethod >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphology" "', argument " "3"" of type '" "Magick::KernelInfoType""'");
    } 
    arg3 = static_cast< Magick::KernelInfoType >(val3);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[2], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphology" "', argument " "4"" of type '" "std::string const""'"); 
        }
        arg4 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphology(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_morphology(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphology__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphology__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphology__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphology__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphology__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphology__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphology__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphology__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function morphology.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::MorphologyMethod arg3 ;
    std::string arg4 ;
    ssize_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphologyChannel(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg3 = static_cast< Magick::MorphologyMethod >(val3);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "std::string const""'"); 
          }
          arg4 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      ecode5 = SWIG_AsVal_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_morphologyChannel" "', argument " "5"" of type '" "ssize_t""'");
      } 
      arg5 = static_cast< ssize_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::MorphologyMethod arg3 ;
  std::string arg4 ;
  ssize_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg3 = static_cast< Magick::MorphologyMethod >(val3);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[2], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "std::string const""'"); 
        }
        arg4 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    ecode5 = SWIG_AsVal_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_morphologyChannel" "', argument " "5"" of type '" "ssize_t""'");
    } 
    arg5 = static_cast< ssize_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphologyChannel(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::MorphologyMethod arg3 ;
    std::string arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphologyChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg3 = static_cast< Magick::MorphologyMethod >(val3);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "std::string const""'"); 
          }
          arg4 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::MorphologyMethod arg3 ;
  std::string arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg3 = static_cast< Magick::MorphologyMethod >(val3);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[2], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "std::string const""'"); 
        }
        arg4 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphologyChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannelAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::MorphologyMethod arg3 ;
    Magick::KernelInfoType arg4 ;
    std::string arg5 ;
    ssize_t arg6 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int val6 ;
    int ecode6 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphologyChannel(arg2,arg3,arg4,arg5,arg6);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg3 = static_cast< Magick::MorphologyMethod >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "Magick::KernelInfoType""'");
      } 
      arg4 = static_cast< Magick::KernelInfoType >(val4);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[3], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "5"" of type '" "std::string const""'"); 
          }
          arg5 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      ecode6 = SWIG_AsVal_int(info[4], &val6);
      if (!SWIG_IsOK(ecode6)) {
        SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_morphologyChannel" "', argument " "6"" of type '" "ssize_t""'");
      } 
      arg6 = static_cast< ssize_t >(val6);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyChannelAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::MorphologyMethod arg3 ;
  Magick::KernelInfoType arg4 ;
  std::string arg5 ;
  ssize_t arg6 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  int val6 ;
  int ecode6 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg3 = static_cast< Magick::MorphologyMethod >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "Magick::KernelInfoType""'");
    } 
    arg4 = static_cast< Magick::KernelInfoType >(val4);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[3], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "5"" of type '" "std::string const""'"); 
        }
        arg5 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    ecode6 = SWIG_AsVal_int(info[4], &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_morphologyChannel" "', argument " "6"" of type '" "ssize_t""'");
    } 
    arg6 = static_cast< ssize_t >(val6);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphologyChannel(arg2,arg3,arg4,arg5,arg6);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannelAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::MorphologyMethod arg3 ;
    Magick::KernelInfoType arg4 ;
    std::string arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->morphologyChannel(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
      } 
      arg3 = static_cast< Magick::MorphologyMethod >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "Magick::KernelInfoType""'");
      } 
      arg4 = static_cast< Magick::KernelInfoType >(val4);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[3], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "5"" of type '" "std::string const""'"); 
          }
          arg5 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_morphologyChannelAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_morphologyChannelAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_morphologyChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannelAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannelAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannelAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannelAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function morphologyChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_morphologyChannel__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::MorphologyMethod arg3 ;
  Magick::KernelInfoType arg4 ;
  std::string arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_morphologyChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_morphologyChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_morphologyChannel" "', argument " "3"" of type '" "Magick::MorphologyMethod""'");
    } 
    arg3 = static_cast< Magick::MorphologyMethod >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_morphologyChannel" "', argument " "4"" of type '" "Magick::KernelInfoType""'");
    } 
    arg4 = static_cast< Magick::KernelInfoType >(val4);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[3], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_morphologyChannel" "', argument " "5"" of type '" "std::string const""'"); 
        }
        arg5 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->morphologyChannel(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_morphologyChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_morphologyChannel__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_morphologyChannel__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function morphologyChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_motionBlurAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_motionBlurAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_motionBlurAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->motionBlur(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_motionBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_motionBlur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_motionBlur" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_motionBlur" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_motionBlurAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_motionBlurAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_motionBlurAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_motionBlurAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_motionBlur(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_motionBlur.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_motionBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_motionBlur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_motionBlur" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_motionBlur" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->motionBlur(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negateAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->negate(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_negate" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_negateAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_negateAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negate__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_negate" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->negate(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negateAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->negate();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_negateAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_negateAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_negateAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_negateAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negateAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negateAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negateAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negateAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function negateAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negate__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->negate();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_negate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negate__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negate__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negate__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negate__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function negate.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negateChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    bool arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    bool val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->negateChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negateChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_negateChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_negateChannel" "', argument " "3"" of type '" "bool""'");
      } 
      arg3 = static_cast< bool >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_negateChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negateChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negateChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_negateChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_negateChannel" "', argument " "3"" of type '" "bool""'");
    } 
    arg3 = static_cast< bool >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->negateChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negateChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->negateChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negateChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_negateChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_negateChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_negateChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_negateChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negateChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negateChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negateChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negateChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function negateChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_negateChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_negateChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_negateChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->negateChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_negateChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negateChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negateChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_negateChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_negateChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function negateChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_normalizeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_normalizeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_normalizeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->normalize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_normalize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_normalizeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_normalizeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_normalizeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_normalizeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_normalize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_normalize.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_normalize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->normalize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_oilPaintAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->oilPaint(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_oilPaint" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_oilPaint" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_oilPaint" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_oilPaintAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_oilPaint__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_oilPaint" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_oilPaint" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_oilPaint" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->oilPaint(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_oilPaintAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->oilPaint(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_oilPaint" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_oilPaint" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_oilPaintAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_oilPaint__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_oilPaint" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_oilPaint" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->oilPaint(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_oilPaintAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->oilPaint();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_oilPaint" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_oilPaintAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_oilPaintAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_oilPaintAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_oilPaintAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_oilPaintAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_oilPaintAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_oilPaintAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_oilPaintAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_oilPaintAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function oilPaintAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_oilPaint__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_oilPaint" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->oilPaint();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_oilPaint(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_oilPaint__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_oilPaint__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_oilPaint__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_oilPaint__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_oilPaint__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_oilPaint__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function oilPaint.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_opaqueAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    bool arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->opaque((Magick::Color const &)*arg2,(Magick::Color const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_opaque" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_opaque" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_opaqueAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_opaque__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_opaque" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_opaque" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->opaque((Magick::Color const &)*arg2,(Magick::Color const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_opaqueAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->opaque((Magick::Color const &)*arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_opaque" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_opaqueAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_opaqueAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_opaqueAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_opaqueAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_opaqueAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_opaqueAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_opaqueAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function opaqueAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_opaque__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_opaque" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_opaque" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->opaque((Magick::Color const &)*arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_opaque(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_opaque__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_opaque__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_opaque__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_opaque__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function opaque.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orderedDitherAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_orderedDitherAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_orderedDitherAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->orderedDither(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orderedDither" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_orderedDither" "', argument " "2"" of type '" "std::string""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_orderedDitherAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_orderedDitherAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_orderedDitherAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_orderedDitherAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orderedDither(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_orderedDither.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orderedDither" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_orderedDither" "', argument " "2"" of type '" "std::string""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->orderedDither(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orderedDitherChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_orderedDitherChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    std::string arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_orderedDitherChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->orderedDitherChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orderedDitherChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_orderedDitherChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_orderedDitherChannel" "', argument " "3"" of type '" "std::string""'"); 
          }
          arg3 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_orderedDitherChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_orderedDitherChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_orderedDitherChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_orderedDitherChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_orderedDitherChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  std::string arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_orderedDitherChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_orderedDitherChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_orderedDitherChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_orderedDitherChannel" "', argument " "3"" of type '" "std::string""'"); 
        }
        arg3 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->orderedDitherChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_perceptibleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_perceptibleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_perceptibleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->perceptible(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_perceptible" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_perceptible" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_perceptibleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_perceptibleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_perceptibleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_perceptibleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_perceptible(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_perceptible.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_perceptible" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_perceptible" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->perceptible(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_perceptibleChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_perceptibleChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_perceptibleChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->perceptibleChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_perceptibleChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_perceptibleChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_perceptibleChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_perceptibleChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_perceptibleChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_perceptibleChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_perceptibleChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_perceptibleChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_perceptibleChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_perceptibleChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_perceptibleChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_perceptibleChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->perceptibleChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_perceptualHashAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_perceptualHashAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ImagePerceptualHash result;
    
  public:
    _Magick_Image__wrap_Magick_Image_perceptualHashAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->perceptualHash();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::ImagePerceptualHash(result)), SWIGTYPE_p_Magick__ImagePerceptualHash, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_perceptualHash" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_perceptualHashAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_perceptualHashAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_perceptualHashAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_perceptualHashAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_perceptualHash(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ImagePerceptualHash result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_perceptualHash.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_perceptualHash" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->perceptualHash();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::ImagePerceptualHash(result)), SWIGTYPE_p_Magick__ImagePerceptualHash, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pingAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->ping((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_ping" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_pingAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_pingAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_ping__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_ping" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->ping((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pingAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->ping((Magick::Blob const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_ping" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_pingAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_pingAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_pingAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_pingAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pingAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pingAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pingAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pingAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function pingAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_ping__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_ping" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_ping" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->ping((Magick::Blob const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_ping(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_ping__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_ping__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_ping__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_ping__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function ping.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pixelColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    Magick::Color *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    Magick::Color from_string_temp4 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->pixelColor(arg2,arg3,(Magick::Color const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_pixelColor" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_pixelColor" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[2].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg4
            std::string *arg4;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[2], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg4 = ptr;
            };
            // Construct the object from this string
            from_string_temp4 = Magick::Color(*arg4);
            // The string is not needed anymore
            delete arg4;
          }
          // We then assign the local temporary arg4 to the real arg4
          arg4 = &from_string_temp4;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg4 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_pixelColorAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pixelColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::Color *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::Color from_string_temp4 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_pixelColor" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_pixelColor" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[2].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg4
          std::string *arg4;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[2], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg4 = ptr;
          };
          // Construct the object from this string
          from_string_temp4 = Magick::Color(*arg4);
          // The string is not needed anymore
          delete arg4;
        }
        // We then assign the local temporary arg4 to the real arg4
        arg4 = &from_string_temp4;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[2], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg4 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->pixelColor(arg2,arg3,(Magick::Color const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pixelColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->pixelColor(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_pixelColor" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_pixelColor" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_pixelColorAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_pixelColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_pixelColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pixelColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pixelColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pixelColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pixelColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function pixelColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_pixelColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_pixelColor" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_pixelColor" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_pixelColor" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->pixelColor(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_pixelColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pixelColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pixelColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_pixelColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_pixelColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function pixelColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_polaroidAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_polaroidAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    double arg3 ;
    Magick::PixelInterpolateMethod arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    double val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_polaroidAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->polaroid((std::string const &)*arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_polaroid" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_polaroid" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_polaroid" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_polaroid" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_polaroid" "', argument " "4"" of type '" "Magick::PixelInterpolateMethod""'");
      } 
      arg4 = static_cast< Magick::PixelInterpolateMethod >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_polaroidAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_polaroidAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_polaroidAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_polaroidAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_polaroid(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  double arg3 ;
  Magick::PixelInterpolateMethod arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  double val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_polaroid.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_polaroid" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_polaroid" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_polaroid" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_polaroid" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_polaroid" "', argument " "4"" of type '" "Magick::PixelInterpolateMethod""'");
    } 
    arg4 = static_cast< Magick::PixelInterpolateMethod >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->polaroid((std::string const &)*arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_posterizeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_posterizeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    Magick::DitherMethod arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_posterizeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->posterize(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_posterize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_posterize" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_posterize" "', argument " "3"" of type '" "Magick::DitherMethod""'");
      } 
      arg3 = static_cast< Magick::DitherMethod >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_posterizeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_posterizeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_posterizeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_posterizeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_posterize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  Magick::DitherMethod arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_posterize.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_posterize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_posterize" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_posterize" "', argument " "3"" of type '" "Magick::DitherMethod""'");
    } 
    arg3 = static_cast< Magick::DitherMethod >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->posterize(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_posterizeChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_posterizeChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    size_t arg3 ;
    Magick::DitherMethod arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_posterizeChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->posterizeChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_posterizeChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_posterizeChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_posterizeChannel" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_posterizeChannel" "', argument " "4"" of type '" "Magick::DitherMethod""'");
      } 
      arg4 = static_cast< Magick::DitherMethod >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_posterizeChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_posterizeChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_posterizeChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_posterizeChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_posterizeChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  size_t arg3 ;
  Magick::DitherMethod arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_posterizeChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_posterizeChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_posterizeChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_posterizeChannel" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_posterizeChannel" "', argument " "4"" of type '" "Magick::DitherMethod""'");
    } 
    arg4 = static_cast< Magick::DitherMethod >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->posterizeChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_processAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_processAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    ::ssize_t arg3 ;
    char **arg4 = (char **) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_processAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->process(arg2,arg3,(char const **)arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_process" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_process" "', argument " "2"" of type '" "std::string""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_process" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_p_char, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_process" "', argument " "4"" of type '" "char const **""'"); 
      }
      arg4 = reinterpret_cast< char ** >(argp4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_processAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_processAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_processAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_processAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_process(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  ::ssize_t arg3 ;
  char **arg4 = (char **) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_process.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_process" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_process" "', argument " "2"" of type '" "std::string""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_process" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_p_char, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_process" "', argument " "4"" of type '" "char const **""'"); 
    }
    arg4 = reinterpret_cast< char ** >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->process(arg2,arg3,(char const **)arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_profileAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    Magick::Blob *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->profile(arg2,(Magick::Blob const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_profile" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_profile" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_profile" "', argument " "3"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_profile" "', argument " "3"" of type '" "Magick::Blob const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Blob * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_profileAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_profileAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_profile__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  Magick::Blob *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_profile" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_profile" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_profile" "', argument " "3"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_profile" "', argument " "3"" of type '" "Magick::Blob const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Blob * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->profile(arg2,(Magick::Blob const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_profileAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Blob result;
    
  public:
    _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->profile(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_profile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_profile" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_profileAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_profileAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_profileAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_profileAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_profileAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_profileAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_profileAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_profileAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function profileAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_profile__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Blob result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_profile" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_profile" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->profile(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Blob(result)), SWIGTYPE_p_Magick__Blob, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_profile(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_profile__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_profile__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_profile__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_profile__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function profile.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quantize(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantize" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_quantize" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantize(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->quantize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quantize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_quantize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_quantize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_quantize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quantize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_raiseAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    bool arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    bool val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->raise((Magick::Geometry const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      ecode3 = SWIG_AsVal_bool(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_raise" "', argument " "3"" of type '" "bool""'");
      } 
      arg3 = static_cast< bool >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_raiseAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_raise__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    ecode3 = SWIG_AsVal_bool(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_raise" "', argument " "3"" of type '" "bool""'");
    } 
    arg3 = static_cast< bool >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->raise((Magick::Geometry const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_raiseAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->raise((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_raiseAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_raise__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->raise((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_raiseAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->raise();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_raiseAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_raiseAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_raiseAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_raiseAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_raiseAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_raiseAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_raiseAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_raiseAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_raiseAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function raiseAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_raise__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_raise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->raise();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_raise(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_raise__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_raise__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_raise__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_raise__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_raise__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_raise__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function raise.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_randomThresholdAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_randomThresholdAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_randomThresholdAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->randomThreshold(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_randomThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_randomThreshold" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_randomThreshold" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_randomThresholdAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_randomThresholdAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_randomThresholdAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_randomThresholdAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_randomThreshold(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_randomThreshold.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_randomThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_randomThreshold" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_randomThreshold" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->randomThreshold(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_randomThresholdChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_randomThresholdChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_randomThresholdChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->randomThresholdChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_randomThresholdChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_randomThresholdChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_randomThresholdChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_randomThresholdChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_randomThresholdChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_randomThresholdChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_randomThresholdChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->randomThresholdChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read((Magick::Blob const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read((Magick::Blob const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Geometry from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Geometry(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Geometry from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Geometry(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    size_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Geometry from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Geometry(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  size_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Geometry from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Geometry(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    size_t arg4 ;
    std::string *arg5 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Geometry from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    int res5 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3,arg4,(std::string const &)*arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res5)) delete arg5;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Geometry(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);{
        {
          std::string *ptr = (std::string *)0;
          res5 = SWIG_AsPtr_std_string(info[3], &ptr);
          if (!SWIG_IsOK(res5)) {
            SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_read" "', argument " "5"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "5"" of type '" "std::string const &""'"); 
          }
          arg5 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  size_t arg4 ;
  std::string *arg5 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Geometry from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  int res5 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Geometry(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);{
      {
        std::string *ptr = (std::string *)0;
        res5 = SWIG_AsPtr_std_string(info[3], &ptr);
        if (!SWIG_IsOK(res5)) {
          SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_read" "', argument " "5"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "5"" of type '" "std::string const &""'"); 
        }
        arg5 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3,arg4,(std::string const &)*arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res5)) delete arg5;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res5)) delete arg5;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res5)) delete arg5;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = 0 ;
    Magick::Geometry *arg3 = 0 ;
    std::string *arg4 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    Magick::Geometry from_string_temp3 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    int res4 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3,(std::string const &)*arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res4)) delete arg4;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[1].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg3
            std::string *arg3;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[1], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg3 = ptr;
            };
            // Construct the object from this string
            from_string_temp3 = Magick::Geometry(*arg3);
            // The string is not needed anymore
            delete arg3;
          }
          // We then assign the local temporary arg3 to the real arg3
          arg3 = &from_string_temp3;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res4 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res4)) {
            SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
          }
          arg4 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = 0 ;
  Magick::Geometry *arg3 = 0 ;
  std::string *arg4 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::Geometry from_string_temp3 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  int res4 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[1].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg3
          std::string *arg3;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[1], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg3 = ptr;
          };
          // Construct the object from this string
          from_string_temp3 = Magick::Geometry(*arg3);
          // The string is not needed anymore
          delete arg3;
        }
        // We then assign the local temporary arg3 to the real arg3
        arg3 = &from_string_temp3;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg3 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res4 = SWIG_AsPtr_std_string(info[2], &ptr);
        if (!SWIG_IsOK(res4)) {
          SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
        }
        arg4 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read((Magick::Blob const &)*arg2,(Magick::Geometry const &)*arg3,(std::string const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res4)) delete arg4;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res4)) delete arg4;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res4)) delete arg4;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_5(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_5_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    std::string *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_5_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read((Magick::Geometry const &)*arg2,(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_read" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_5_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_5.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_5_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_5_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_read" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read((Magick::Geometry const &)*arg2,(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_6(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_6_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    size_t arg3 ;
    std::string *arg4 = 0 ;
    Magick::StorageType arg5 ;
    void *arg6 = (void *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
    int res4 = SWIG_OLDOBJ ;
    Napi::TypedArray _global_typed_array ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_6_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read(arg2,arg3,(std::string const &)*arg4,arg5,(void const *)arg6);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res4)) delete arg4;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_read" "', argument " "3"" of type '" "size_t""'");
      } 
      arg3 = static_cast< size_t >(val3);{
        {
          std::string *ptr = (std::string *)0;
          res4 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res4)) {
            SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
          }
          arg4 = ptr;
        }
      }
      {
        {
          if (info[3].IsTypedArray()) {
            _global_typed_array = info[3].As<Napi::TypedArray>();
            arg5 = GetMagickStorageType(env, _global_typed_array);
            arg6 = reinterpret_cast<void*>(
              reinterpret_cast<uint8_t *>(_global_typed_array.ArrayBuffer().Data()) + _global_typed_array.ByteOffset());
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_read', argument 5 is not a TypedArray");
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        if (arg2 * arg3 * arg4->size() != _global_typed_array.ElementLength()) {
          SWIG_exception_fail(SWIG_IndexError,
            "The number of elements in the TypedArray does not match the number of pixels in the image");
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_6_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_6.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_6_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_6_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  size_t arg3 ;
  std::string *arg4 = 0 ;
  Magick::StorageType arg5 ;
  void *arg6 = (void *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  int res4 = SWIG_OLDOBJ ;
  Napi::TypedArray _global_typed_array ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_read" "', argument " "3"" of type '" "size_t""'");
    } 
    arg3 = static_cast< size_t >(val3);{
      {
        std::string *ptr = (std::string *)0;
        res4 = SWIG_AsPtr_std_string(info[2], &ptr);
        if (!SWIG_IsOK(res4)) {
          SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "4"" of type '" "std::string const &""'"); 
        }
        arg4 = ptr;
      }
    }
    {
      {
        if (info[3].IsTypedArray()) {
          _global_typed_array = info[3].As<Napi::TypedArray>();
          arg5 = GetMagickStorageType(env, _global_typed_array);
          arg6 = reinterpret_cast<void*>(
            reinterpret_cast<uint8_t *>(_global_typed_array.ArrayBuffer().Data()) + _global_typed_array.ByteOffset());
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_read', argument 5 is not a TypedArray");
        }
      }
    }
    
    {
      if (arg2 * arg3 * arg4->size() != _global_typed_array.ElementLength()) {
        SWIG_exception_fail(SWIG_IndexError,
          "The number of elements in the TypedArray does not match the number of pixels in the image");
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read(arg2,arg3,(std::string const &)*arg4,arg5,(void const *)arg6);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res4)) delete arg4;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res4)) delete arg4;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res4)) delete arg4;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readAsync__SWIG_7(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readAsync__SWIG_7_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readAsync__SWIG_7_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->read((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readAsync__SWIG_7_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readAsync__SWIG_7.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readAsync__SWIG_7_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readAsync__SWIG_7_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_readAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readAsync__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readAsync__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function readAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_read__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_read" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_read" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_read" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->read((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_read(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_read__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_read__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function read.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readMaskAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->readMask((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_readMask" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_readMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_readMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readMaskAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readMask__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_readMask" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_readMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_readMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->readMask((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readMaskAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->readMask();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_readMask" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readMaskAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readMaskAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_readMaskAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readMaskAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readMaskAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readMaskAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readMaskAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function readMaskAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readMask__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_readMask" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->readMask();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_readMask(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readMask__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readMask__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_readMask__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_readMask__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function readMask.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readPixelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_readPixelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::QuantumType arg2 ;
    unsigned char *arg3 = (unsigned char *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_readPixelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->readPixels(arg2,(unsigned char const *)arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_readPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_readPixels" "', argument " "2"" of type '" "Magick::QuantumType""'");
      } 
      arg2 = static_cast< Magick::QuantumType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_unsigned_char, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_readPixels" "', argument " "3"" of type '" "unsigned char const *""'"); 
      }
      arg3 = reinterpret_cast< unsigned char * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_readPixelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readPixelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_readPixelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_readPixelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_readPixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::QuantumType arg2 ;
  unsigned char *arg3 = (unsigned char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_readPixels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_readPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_readPixels" "', argument " "2"" of type '" "Magick::QuantumType""'");
    } 
    arg2 = static_cast< Magick::QuantumType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_unsigned_char, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_readPixels" "', argument " "3"" of type '" "unsigned char const *""'"); 
    }
    arg3 = reinterpret_cast< unsigned char * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->readPixels(arg2,(unsigned char const *)arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_reduceNoiseAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->reduceNoise();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_reduceNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_reduceNoiseAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_reduceNoise__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_reduceNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->reduceNoise();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_reduceNoiseAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->reduceNoise(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_reduceNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_reduceNoise" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_reduceNoiseAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_reduceNoiseAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_reduceNoiseAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_reduceNoiseAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_reduceNoiseAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_reduceNoiseAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_reduceNoiseAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function reduceNoiseAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_reduceNoise__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_reduceNoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_reduceNoise" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->reduceNoise(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_reduceNoise(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_reduceNoise__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_reduceNoise__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_reduceNoise__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_reduceNoise__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function reduceNoise.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_repageAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_repageAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_repageAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->repage();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_repage" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_repageAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_repageAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_repageAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_repageAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_repage(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_repage.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_repage" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->repage();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resampleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_resampleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Point *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_resampleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->resample((Magick::Point const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resample" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Point,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_resample" "', argument " "2"" of type '" "Magick::Point const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_resample" "', argument " "2"" of type '" "Magick::Point const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Point * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_resampleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_resampleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_resampleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_resampleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resample(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Point *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_resample.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resample" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Point,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_resample" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_resample" "', argument " "2"" of type '" "Magick::Point const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Point * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->resample((Magick::Point const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resizeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_resizeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_resizeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->resize((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_resizeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_resizeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_resizeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_resizeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_resize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_resize.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_resize" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->resize((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rollAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->roll((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_roll" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_roll" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_roll" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rollAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_rollAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_roll__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_roll" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_roll" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_roll" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->roll((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rollAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ssize_t arg2 ;
    ssize_t arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->roll(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_roll" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_roll" "', argument " "2"" of type '" "ssize_t""'");
      } 
      arg2 = static_cast< ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_roll" "', argument " "3"" of type '" "ssize_t""'");
      } 
      arg3 = static_cast< ssize_t >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rollAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_rollAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_rollAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_rollAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_rollAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_rollAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_rollAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_rollAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function rollAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_roll__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ssize_t arg2 ;
  ssize_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_roll" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_roll" "', argument " "2"" of type '" "ssize_t""'");
    } 
    arg2 = static_cast< ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_roll" "', argument " "3"" of type '" "ssize_t""'");
    } 
    arg3 = static_cast< ssize_t >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->roll(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_roll(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_roll__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_roll__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_roll__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_roll__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function roll.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rotateAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_rotateAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_rotateAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->rotate(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_rotate" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_rotateAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rotateAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_rotateAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_rotateAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rotate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rotate.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rotate" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_rotate" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->rotate(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rotationalBlurAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_rotationalBlurAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_rotationalBlurAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->rotationalBlur(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rotationalBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_rotationalBlur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_rotationalBlurAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rotationalBlurAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_rotationalBlurAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_rotationalBlurAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rotationalBlur(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rotationalBlur.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rotationalBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_rotationalBlur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->rotationalBlur(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rotationalBlurChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_rotationalBlurChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_rotationalBlurChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->rotationalBlurChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rotationalBlurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_rotationalBlurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_rotationalBlurChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_rotationalBlurChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rotationalBlurChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_rotationalBlurChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_rotationalBlurChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_rotationalBlurChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_rotationalBlurChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_rotationalBlurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_rotationalBlurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_rotationalBlurChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->rotationalBlurChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sampleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sampleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sampleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sample((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sampleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sampleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sampleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sampleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sample(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sample.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_sample" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sample((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_scaleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_scaleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_scaleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->scale((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_scaleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_scaleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_scaleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_scaleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_scale(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_scale.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_scale" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->scale((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_segmentAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->segment(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_segment" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_segment" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_segment" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_segmentAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_segment__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_segment" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_segment" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_segment" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->segment(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_segmentAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->segment(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_segment" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_segment" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_segmentAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_segment__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_segment" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_segment" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->segment(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_segmentAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->segment();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_segment" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_segmentAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_segmentAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_segmentAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_segmentAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_segmentAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_segmentAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_segmentAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_segmentAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_segmentAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function segmentAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_segment__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_segment" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->segment();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_segment(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_segment__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_segment__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_segment__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_segment__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_segment__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_segment__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function segment.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_selectiveBlurAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_selectiveBlurAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_selectiveBlurAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->selectiveBlur(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_selectiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_selectiveBlur" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_selectiveBlur" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_selectiveBlur" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_selectiveBlurAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_selectiveBlurAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_selectiveBlurAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_selectiveBlurAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_selectiveBlur(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_selectiveBlur.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_selectiveBlur" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_selectiveBlur" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_selectiveBlur" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_selectiveBlur" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->selectiveBlur(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_selectiveBlurChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_selectiveBlurChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    double val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_selectiveBlurChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->selectiveBlurChannel(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "5"" of type '" "double""'");
      } 
      arg5 = static_cast< double >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_selectiveBlurChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_selectiveBlurChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_selectiveBlurChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_selectiveBlurChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_selectiveBlurChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_selectiveBlurChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_selectiveBlurChannel" "', argument " "5"" of type '" "double""'");
    } 
    arg5 = static_cast< double >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->selectiveBlurChannel(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_separateAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_separateAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_separateAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->separate(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_separate" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_separate" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_separateAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_separateAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_separateAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_separateAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_separate(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_separate.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_separate" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_separate" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->separate(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sepiaToneAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sepiaToneAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sepiaToneAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sepiaTone(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sepiaTone" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sepiaTone" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sepiaToneAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sepiaToneAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sepiaToneAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sepiaToneAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sepiaTone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sepiaTone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sepiaTone" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sepiaTone" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sepiaTone(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_setColorMetricAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_setColorMetricAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Image__wrap_Magick_Image_setColorMetricAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)(arg1)->setColorMetric((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_setColorMetric" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_setColorMetric" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_setColorMetric" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_setColorMetricAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_setColorMetricAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_setColorMetricAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_setColorMetricAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_setColorMetric(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_setColorMetric.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_setColorMetric" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_setColorMetric" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_setColorMetric" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)(arg1)->setColorMetric((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_setPixelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_setPixelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    size_t arg4 ;
    size_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    unsigned int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Quantum *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_setPixelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::Quantum *)(arg1)->setPixels(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_float, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_setPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_setPixels" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_setPixels" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_setPixels" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_setPixels" "', argument " "5"" of type '" "size_t""'");
      } 
      arg5 = static_cast< size_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_setPixelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_setPixelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_setPixelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_setPixelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_setPixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  size_t arg4 ;
  size_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  unsigned int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Quantum *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_setPixels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_setPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_setPixels" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_setPixels" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_setPixels" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_setPixels" "', argument " "5"" of type '" "size_t""'");
    } 
    arg5 = static_cast< size_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Quantum *)(arg1)->setPixels(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_float, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    bool arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shade(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shade" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shade" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_shade" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shade__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shade" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shade" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_shade" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shade(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shade(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shade" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shade" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shade__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shade" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shade" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shade(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadeAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shade(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shade" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadeAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shade__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shade" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shade(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadeAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shade();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadeAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadeAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_shadeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadeAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadeAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadeAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadeAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function shadeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shade__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shade" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shade();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_shade(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shade__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shade__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shade__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shade__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shade__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shade__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shade__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shade__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function shade.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadowAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    ssize_t arg4 ;
    ssize_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shadow(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shadow" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_shadow" "', argument " "4"" of type '" "ssize_t""'");
      } 
      arg4 = static_cast< ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_shadow" "', argument " "5"" of type '" "ssize_t""'");
      } 
      arg5 = static_cast< ssize_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadowAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadow__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  ssize_t arg4 ;
  ssize_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shadow" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_shadow" "', argument " "4"" of type '" "ssize_t""'");
    } 
    arg4 = static_cast< ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_shadow" "', argument " "5"" of type '" "ssize_t""'");
    } 
    arg5 = static_cast< ssize_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shadow(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadowAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    ssize_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shadow(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shadow" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_shadow" "', argument " "4"" of type '" "ssize_t""'");
      } 
      arg4 = static_cast< ssize_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadowAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadow__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  ssize_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shadow" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_shadow" "', argument " "4"" of type '" "ssize_t""'");
    } 
    arg4 = static_cast< ssize_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shadow(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadowAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shadow(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shadow" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadowAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadow__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shadow" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shadow(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadowAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shadow(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadowAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadow__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shadow" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shadow(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadowAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shadow();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shadowAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shadowAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_shadowAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadowAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadowAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadowAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadowAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadowAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadowAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadowAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadowAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadowAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadowAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function shadowAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shadow__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shadow" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shadow();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_shadow(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadow__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadow__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadow__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadow__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadow__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadow__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadow__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadow__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_shadow__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_shadow__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function shadow.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sharpen(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpen" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sharpen" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sharpenAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpen__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpen" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sharpen" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sharpen(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sharpen(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpen" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sharpenAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpen__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpen" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sharpen(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sharpen();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sharpenAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sharpenAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sharpenAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sharpenAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpen__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpen" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sharpen();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sharpen(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpen__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpen__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpen__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpen__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpen__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpen__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sharpen.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenChannelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sharpenChannel(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sharpenChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sharpenChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sharpenChannelAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenChannel__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sharpenChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sharpenChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sharpenChannel(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenChannelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sharpenChannel(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sharpenChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sharpenChannelAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenChannel__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sharpenChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sharpenChannel(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenChannelAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sharpenChannel(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sharpenChannelAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sharpenChannelAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sharpenChannelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenChannelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenChannelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenChannelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenChannelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenChannelAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenChannelAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sharpenChannelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sharpenChannel__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sharpenChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sharpenChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sharpenChannel(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sharpenChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenChannel__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenChannel__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenChannel__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenChannel__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sharpenChannel__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sharpenChannel__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sharpenChannel.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shaveAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shaveAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shaveAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shave((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shaveAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shaveAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shaveAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shaveAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shave(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shave.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_shave" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shave((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shearAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_shearAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_shearAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shear(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shear" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shear" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shear" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_shearAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shearAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_shearAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_shearAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_shear(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_shear.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_shear" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_shear" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_shear" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shear(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sigmoidalContrast(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sigmoidalContrast__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sigmoidalContrast(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sigmoidalContrast(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sigmoidalContrastAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sigmoidalContrastAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sigmoidalContrastAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sigmoidalContrast__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sigmoidalContrast" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sigmoidalContrast(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sigmoidalContrast(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sigmoidalContrast__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sigmoidalContrast__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sigmoidalContrast__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sigmoidalContrast__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sigmoidalContrast.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_signatureAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->signature(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_signature" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_signature" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_signatureAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_signature__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_signature" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_signature" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->signature(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_signatureAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->signature();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_signature" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_signatureAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_signatureAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_signatureAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_signatureAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_signatureAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_signatureAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_signatureAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function signatureAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_signature__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_signature" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->signature();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_signature(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_signature__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_signature__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_signature__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_signature__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function signature.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketchAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sketch(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sketch" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sketch" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sketch" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sketchAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketch__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sketch" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sketch" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sketch" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sketch(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketchAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sketch(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sketch" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sketch" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sketchAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketch__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sketch" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sketch" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sketch(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketchAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sketch(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sketch" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sketchAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketch__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sketch" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sketch(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketchAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sketch();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sketchAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sketchAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sketchAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketchAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketchAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketchAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketchAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketchAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketchAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketchAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketchAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sketchAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sketch__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sketch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sketch();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_sketch(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketch__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketch__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketch__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketch__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketch__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketch__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_sketch__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_sketch__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function sketch.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_solarizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->solarize(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_solarize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_solarize" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_solarizeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_solarize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_solarize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_solarize" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->solarize(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_solarizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->solarize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_solarize" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_solarizeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_solarizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_solarizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_solarizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_solarizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_solarizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_solarizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function solarizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_solarize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_solarize" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->solarize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_solarize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_solarize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_solarize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_solarize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_solarize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function solarize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sparseColorAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_sparseColorAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    Magick::SparseColorMethod arg3 ;
    size_t arg4 ;
    double *arg5 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_sparseColorAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->sparseColor(arg2,arg3,arg4,(double const *)arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sparseColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sparseColor" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sparseColor" "', argument " "3"" of type '" "Magick::SparseColorMethod""'");
      } 
      arg3 = static_cast< Magick::SparseColorMethod >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sparseColor" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_sparseColor" "', argument " "5"" of type '" "double const *""'"); 
      }
      arg5 = reinterpret_cast< double * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_sparseColorAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sparseColorAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_sparseColorAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_sparseColorAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_sparseColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  Magick::SparseColorMethod arg3 ;
  size_t arg4 ;
  double *arg5 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_sparseColor.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_sparseColor" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_sparseColor" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_sparseColor" "', argument " "3"" of type '" "Magick::SparseColorMethod""'");
    } 
    arg3 = static_cast< Magick::SparseColorMethod >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_sparseColor" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_sparseColor" "', argument " "5"" of type '" "double const *""'"); 
    }
    arg5 = reinterpret_cast< double * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->sparseColor(arg2,arg3,arg4,(double const *)arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_spliceAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->splice((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_spliceAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_splice__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->splice((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_spliceAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->splice((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_spliceAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_splice__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->splice((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_spliceAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    Magick::GravityType arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->splice((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_splice" "', argument " "4"" of type '" "Magick::GravityType""'");
      } 
      arg4 = static_cast< Magick::GravityType >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_spliceAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_spliceAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_spliceAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_spliceAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_spliceAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_spliceAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_spliceAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_spliceAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_spliceAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function spliceAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_splice__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  Magick::GravityType arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_splice" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_splice" "', argument " "4"" of type '" "Magick::GravityType""'");
    } 
    arg4 = static_cast< Magick::GravityType >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->splice((Magick::Geometry const &)*arg2,(Magick::Color const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_splice(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_splice__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_splice__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_splice__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_splice__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_splice__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_splice__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function splice.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_spreadAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->spread(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_spread" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_spread" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_spreadAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_spread__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_spread" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_spread" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->spread(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_spreadAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->spread();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_spread" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_spreadAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_spreadAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_spreadAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_spreadAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_spreadAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_spreadAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_spreadAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function spreadAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_spread__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_spread" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->spread();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_spread(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_spread__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_spread__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_spread__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_spread__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function spread.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_statisticsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_statisticsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::ImageStatistics result;
    
  public:
    _Magick_Image__wrap_Magick_Image_statisticsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->statistics();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::ImageStatistics(result)), SWIGTYPE_p_Magick__ImageStatistics, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_statistics" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_statisticsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_statisticsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_statisticsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_statisticsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_statistics(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::ImageStatistics result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_statistics.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_statistics" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->statistics();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::ImageStatistics(result)), SWIGTYPE_p_Magick__ImageStatistics, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_steganoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_steganoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_steganoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->stegano((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_stegano" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_stegano" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_stegano" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_steganoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_steganoAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_steganoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_steganoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_stegano(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_stegano.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_stegano" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_stegano" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_stegano" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->stegano((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_stereoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_stereoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_stereoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->stereo((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_stereo" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_stereo" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_stereo" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_stereoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_stereoAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_stereoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_stereoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_stereo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_stereo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_stereo" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_stereo" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_stereo" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->stereo((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_stripAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_stripAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_stripAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strip();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strip" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_stripAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_stripAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_stripAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_stripAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_strip(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_strip.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_strip" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strip();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImageSearchAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::MetricType arg3 ;
    Magick::Geometry *arg4 = (Magick::Geometry *) 0 ;
    double *arg5 = (double *) 0 ;
    double arg6 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    double val6 ;
    int ecode6 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (arg1)->subImageSearch((Magick::Image const &)*arg2,arg3,arg4,arg5,arg6);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImageSearch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_subImageSearch" "', argument " "3"" of type '" "Magick::MetricType""'");
      } 
      arg3 = static_cast< Magick::MetricType >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_subImageSearch" "', argument " "4"" of type '" "Magick::Geometry *""'"); 
      }
      arg4 = reinterpret_cast< Magick::Geometry * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_subImageSearch" "', argument " "5"" of type '" "double *""'"); 
      }
      arg5 = reinterpret_cast< double * >(argp5);ecode6 = SWIG_AsVal_double(info[4], &val6);
      if (!SWIG_IsOK(ecode6)) {
        SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_subImageSearch" "', argument " "6"" of type '" "double""'");
      } 
      arg6 = static_cast< double >(val6);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_subImageSearchAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImageSearch__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::MetricType arg3 ;
  Magick::Geometry *arg4 = (Magick::Geometry *) 0 ;
  double *arg5 = (double *) 0 ;
  double arg6 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImageSearch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_subImageSearch" "', argument " "3"" of type '" "Magick::MetricType""'");
    } 
    arg3 = static_cast< Magick::MetricType >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_subImageSearch" "', argument " "4"" of type '" "Magick::Geometry *""'"); 
    }
    arg4 = reinterpret_cast< Magick::Geometry * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_subImageSearch" "', argument " "5"" of type '" "double *""'"); 
    }
    arg5 = reinterpret_cast< double * >(argp5);ecode6 = SWIG_AsVal_double(info[4], &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_subImageSearch" "', argument " "6"" of type '" "double""'");
    } 
    arg6 = static_cast< double >(val6);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (arg1)->subImageSearch((Magick::Image const &)*arg2,arg3,arg4,arg5,arg6);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImageSearchAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    Magick::MetricType arg3 ;
    Magick::Geometry *arg4 = (Magick::Geometry *) 0 ;
    double *arg5 = (double *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    void *argp4 = 0 ;
    int res4 = 0 ;
    void *argp5 = 0 ;
    int res5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (arg1)->subImageSearch((Magick::Image const &)*arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImageSearch" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_subImageSearch" "', argument " "3"" of type '" "Magick::MetricType""'");
      } 
      arg3 = static_cast< Magick::MetricType >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
      if (!SWIG_IsOK(res4)) {
        SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_subImageSearch" "', argument " "4"" of type '" "Magick::Geometry *""'"); 
      }
      arg4 = reinterpret_cast< Magick::Geometry * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
      if (!SWIG_IsOK(res5)) {
        SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_subImageSearch" "', argument " "5"" of type '" "double *""'"); 
      }
      arg5 = reinterpret_cast< double * >(argp5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_subImageSearchAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_subImageSearchAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_subImageSearchAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImageSearchAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImageSearchAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImageSearchAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImageSearchAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function subImageSearchAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_subImageSearch__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::MetricType arg3 ;
  Magick::Geometry *arg4 = (Magick::Geometry *) 0 ;
  double *arg5 = (double *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  void *argp5 = 0 ;
  int res5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_subImageSearch" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_subImageSearch" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_subImageSearch" "', argument " "3"" of type '" "Magick::MetricType""'");
    } 
    arg3 = static_cast< Magick::MetricType >(val3);res4 = SWIG_ConvertPtr(info[2], &argp4,SWIGTYPE_p_Magick__Geometry, 0 |  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Magick_Image_subImageSearch" "', argument " "4"" of type '" "Magick::Geometry *""'"); 
    }
    arg4 = reinterpret_cast< Magick::Geometry * >(argp4);res5 = SWIG_ConvertPtr(info[3], &argp5,SWIGTYPE_p_double, 0 |  0 );
    if (!SWIG_IsOK(res5)) {
      SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "Magick_Image_subImageSearch" "', argument " "5"" of type '" "double *""'"); 
    }
    arg5 = reinterpret_cast< double * >(argp5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (arg1)->subImageSearch((Magick::Image const &)*arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_subImageSearch(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImageSearch__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImageSearch__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_subImageSearch__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_subImageSearch__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function subImageSearch.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_swirlAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_swirlAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_swirlAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->swirl(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_swirl" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_swirl" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_swirlAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_swirlAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_swirlAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_swirlAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_swirl(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_swirl.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_swirl" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_swirl" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->swirl(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_syncPixelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_syncPixelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_syncPixelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->syncPixels();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_syncPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_syncPixelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_syncPixelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_syncPixelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_syncPixelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_syncPixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_syncPixels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_syncPixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->syncPixels();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_textureAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_textureAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_textureAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->texture((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_texture" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_texture" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_texture" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_textureAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_textureAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_textureAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_textureAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_texture(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_texture.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_texture" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_texture" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_texture" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->texture((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_thresholdAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_thresholdAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_thresholdAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->threshold(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_threshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_threshold" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_thresholdAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_thresholdAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_thresholdAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_thresholdAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_threshold(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_threshold.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_threshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_threshold" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->threshold(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_thumbnailAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_thumbnailAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_thumbnailAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->thumbnail((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_thumbnailAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_thumbnailAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_thumbnailAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_thumbnailAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_thumbnail(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_thumbnail.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_thumbnail" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->thumbnail((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_tintAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_tintAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_tintAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->tint(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_tint" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          int res = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res) || !ptr) {
            SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_tint" "', argument " "2"" of type '" "std::string const""'"); 
          }
          arg2 = *ptr;
          if (SWIG_IsNewObj(res)) delete ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_tintAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_tintAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_tintAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_tintAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_tint(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_tint.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_tint" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        int res = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res) || !ptr) {
          SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Magick_Image_tint" "', argument " "2"" of type '" "std::string const""'"); 
        }
        arg2 = *ptr;
        if (SWIG_IsNewObj(res)) delete ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->tint(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformOriginAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transformOriginAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transformOriginAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transformOrigin(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformOrigin" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformOrigin" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_transformOrigin" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transformOriginAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformOriginAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transformOriginAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transformOriginAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformOrigin(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformOrigin.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformOrigin" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformOrigin" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_transformOrigin" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transformOrigin(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformResetAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transformResetAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transformResetAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transformReset();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformReset" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transformResetAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformResetAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transformResetAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transformResetAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformReset(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformReset.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformReset" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transformReset();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformScaleAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transformScaleAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transformScaleAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transformScale(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformScale" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformScale" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_transformScale" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transformScaleAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformScaleAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transformScaleAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transformScaleAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transformScale(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transformScale.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transformScale" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_transformScale" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_transformScale" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transformScale(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transparentAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    bool arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Color from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    bool val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transparent((Magick::Color const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Color(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      ecode3 = SWIG_AsVal_bool(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_transparent" "', argument " "3"" of type '" "bool""'");
      } 
      arg3 = static_cast< bool >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transparentAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transparent__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    ecode3 = SWIG_AsVal_bool(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_transparent" "', argument " "3"" of type '" "bool""'");
    } 
    arg3 = static_cast< bool >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transparent((Magick::Color const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transparentAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Color from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transparent((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Color(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Color * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transparentAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transparentAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_transparentAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_transparentAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_transparentAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_transparentAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_transparentAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function transparentAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transparent__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Color(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Color,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparent" "', argument " "1"" of type '" "Magick::Color const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Color * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transparent((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_transparent(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_transparent__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_transparent__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_transparent__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_transparent__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function transparent.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transparentChromaAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transparentChromaAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Color *arg2 = 0 ;
    Magick::Color *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transparentChromaAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transparentChroma((Magick::Color const &)*arg2,(Magick::Color const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transparentChroma" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_transparentChroma" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparentChroma" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_transparentChroma" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparentChroma" "', argument " "3"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transparentChromaAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transparentChromaAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transparentChromaAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transparentChromaAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transparentChroma(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transparentChroma.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transparentChroma" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_transparentChroma" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparentChroma" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_transparentChroma" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_transparentChroma" "', argument " "3"" of type '" "Magick::Color const &""'"); 
    }
    arg3 = reinterpret_cast< Magick::Color * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transparentChroma((Magick::Color const &)*arg2,(Magick::Color const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transposeAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transposeAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transposeAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transpose();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transpose" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transposeAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transposeAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transposeAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transposeAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transpose(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transpose.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transpose" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transpose();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transverseAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_transverseAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_transverseAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transverse();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transverse" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_transverseAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transverseAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_transverseAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_transverseAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_transverse(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_transverse.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_transverse" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transverse();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_trimAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_trimAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_trimAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->trim();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_trim" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_trimAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_trimAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_trimAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_trimAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_trim(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_trim.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_trim" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->trim();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_uniqueColorsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_uniqueColorsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_uniqueColorsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->uniqueColors();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_uniqueColors" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_uniqueColorsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_uniqueColorsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_uniqueColorsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_uniqueColorsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_uniqueColors(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_uniqueColors.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_uniqueColors" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->uniqueColors();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_unsharpmaskAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_unsharpmaskAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    double val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_unsharpmaskAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->unsharpmask(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_unsharpmask" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_unsharpmask" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_unsharpmask" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_unsharpmask" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_unsharpmask" "', argument " "5"" of type '" "double""'");
      } 
      arg5 = static_cast< double >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_unsharpmaskAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_unsharpmaskAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_unsharpmaskAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_unsharpmaskAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_unsharpmask(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_unsharpmask.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_unsharpmask" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_unsharpmask" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_unsharpmask" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_unsharpmask" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_unsharpmask" "', argument " "5"" of type '" "double""'");
    } 
    arg5 = static_cast< double >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->unsharpmask(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_unsharpmaskChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_unsharpmaskChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    double arg3 ;
    double arg4 ;
    double arg5 ;
    double arg6 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    double val4 ;
    int ecode4 = 0 ;
    double val5 ;
    int ecode5 = 0 ;
    double val6 ;
    int ecode6 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_unsharpmaskChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->unsharpmaskChannel(arg2,arg3,arg4,arg5,arg6);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "4"" of type '" "double""'");
      } 
      arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "5"" of type '" "double""'");
      } 
      arg5 = static_cast< double >(val5);ecode6 = SWIG_AsVal_double(info[4], &val6);
      if (!SWIG_IsOK(ecode6)) {
        SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "6"" of type '" "double""'");
      } 
      arg6 = static_cast< double >(val6);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_unsharpmaskChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_unsharpmaskChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_unsharpmaskChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_unsharpmaskChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_unsharpmaskChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  double arg3 ;
  double arg4 ;
  double arg5 ;
  double arg6 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  double val5 ;
  int ecode5 = 0 ;
  double val6 ;
  int ecode6 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_unsharpmaskChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_double(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "4"" of type '" "double""'");
    } 
    arg4 = static_cast< double >(val4);ecode5 = SWIG_AsVal_double(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "5"" of type '" "double""'");
    } 
    arg5 = static_cast< double >(val5);ecode6 = SWIG_AsVal_double(info[4], &val6);
    if (!SWIG_IsOK(ecode6)) {
      SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "Magick_Image_unsharpmaskChannel" "', argument " "6"" of type '" "double""'");
    } 
    arg6 = static_cast< double >(val6);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->unsharpmaskChannel(arg2,arg3,arg4,arg5,arg6);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignetteAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    ssize_t arg4 ;
    ssize_t arg5 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    int val5 ;
    int ecode5 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->vignette(arg2,arg3,arg4,arg5);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_vignette" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_vignette" "', argument " "4"" of type '" "ssize_t""'");
      } 
      arg4 = static_cast< ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_vignette" "', argument " "5"" of type '" "ssize_t""'");
      } 
      arg5 = static_cast< ssize_t >(val5);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_vignetteAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignette__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  ssize_t arg4 ;
  ssize_t arg5 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  int val5 ;
  int ecode5 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_vignette" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_vignette" "', argument " "4"" of type '" "ssize_t""'");
    } 
    arg4 = static_cast< ssize_t >(val4);ecode5 = SWIG_AsVal_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_vignette" "', argument " "5"" of type '" "ssize_t""'");
    } 
    arg5 = static_cast< ssize_t >(val5);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->vignette(arg2,arg3,arg4,arg5);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignetteAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    ssize_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->vignette(arg2,arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_vignette" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_vignette" "', argument " "4"" of type '" "ssize_t""'");
      } 
      arg4 = static_cast< ssize_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_vignetteAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignette__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  ssize_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_vignette" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_vignette" "', argument " "4"" of type '" "ssize_t""'");
    } 
    arg4 = static_cast< ssize_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->vignette(arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignetteAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->vignette(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_vignette" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_vignetteAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignette__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_vignette" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->vignette(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignetteAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->vignette(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_vignetteAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignette__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_vignette" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->vignette(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignetteAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->vignette();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_vignetteAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_vignetteAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_vignetteAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignetteAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignetteAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignetteAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignetteAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignetteAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignetteAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignetteAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignetteAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignetteAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignetteAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function vignetteAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_vignette__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_vignette" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->vignette();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_vignette(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignette__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignette__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignette__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignette__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignette__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignette__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignette__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignette__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_vignette__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_vignette__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function vignette.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_waveAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->wave(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_wave" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_wave" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_wave" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_waveAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_waveAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_wave__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_wave" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_wave" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_wave" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->wave(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_waveAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->wave(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_wave" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_wave" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_waveAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_waveAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_wave__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_wave" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_wave" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->wave(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_waveAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->wave();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_wave" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_waveAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_waveAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_waveAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_waveAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_waveAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_waveAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_waveAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_waveAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_waveAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_waveAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function waveAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_wave__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_wave" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->wave();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_wave(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_wave__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_wave__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_wave__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_wave__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_wave__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_wave__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function wave.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_waveletDenoiseAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_waveletDenoiseAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    double arg2 ;
    double arg3 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    double val2 ;
    int ecode2 = 0 ;
    double val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_waveletDenoiseAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->waveletDenoise(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_waveletDenoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_waveletDenoise" "', argument " "2"" of type '" "double""'");
      } 
      arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_waveletDenoise" "', argument " "3"" of type '" "double""'");
      } 
      arg3 = static_cast< double >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_waveletDenoiseAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_waveletDenoiseAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_waveletDenoiseAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_waveletDenoiseAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_waveletDenoise(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  double arg2 ;
  double arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_waveletDenoise.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_waveletDenoise" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_double(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_waveletDenoise" "', argument " "2"" of type '" "double""'");
    } 
    arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_waveletDenoise" "', argument " "3"" of type '" "double""'");
    } 
    arg3 = static_cast< double >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->waveletDenoise(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_whiteThresholdAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_whiteThresholdAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_whiteThresholdAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->whiteThreshold((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_whiteThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_whiteThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_whiteThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_whiteThresholdAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_whiteThresholdAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_whiteThresholdAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_whiteThresholdAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_whiteThreshold(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_whiteThreshold.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_whiteThreshold" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_whiteThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_whiteThreshold" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->whiteThreshold((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_whiteThresholdChannelAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_whiteThresholdChannelAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::ChannelType arg2 ;
    std::string *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_whiteThresholdChannelAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->whiteThresholdChannel(arg2,(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
      } 
      arg2 = static_cast< Magick::ChannelType >(val2);{
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_whiteThresholdChannelAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_whiteThresholdChannelAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_whiteThresholdChannelAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_whiteThresholdChannelAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_whiteThresholdChannel(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::ChannelType arg2 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_whiteThresholdChannel.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "2"" of type '" "Magick::ChannelType""'");
    } 
    arg2 = static_cast< Magick::ChannelType >(val2);{
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_whiteThresholdChannel" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->whiteThresholdChannel(arg2,(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = (Magick::Blob *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->write(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "Magick::Blob *""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writeAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_write__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = (Magick::Blob *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "Magick::Blob *""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->write(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = (Magick::Blob *) 0 ;
    std::string *arg3 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->write(arg2,(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "Magick::Blob *""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writeAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_write__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = (Magick::Blob *) 0 ;
  std::string *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "Magick::Blob *""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->write(arg2,(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Blob *arg2 = (Magick::Blob *) 0 ;
    std::string *arg3 = 0 ;
    size_t arg4 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    int res3 = SWIG_OLDOBJ ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->write(arg2,(std::string const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "Magick::Blob *""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_write" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writeAsync__SWIG_2.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writeAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_write__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Blob *arg2 = (Magick::Blob *) 0 ;
  std::string *arg3 = 0 ;
  size_t arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  int res3 = SWIG_OLDOBJ ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "Magick::Blob *""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);{
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_write" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->write(arg2,(std::string const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ::ssize_t arg2 ;
    ::ssize_t arg3 ;
    size_t arg4 ;
    size_t arg5 ;
    std::string *arg6 = 0 ;
    Magick::StorageType arg7 ;
    void *arg8 = (void *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    int val3 ;
    int ecode3 = 0 ;
    unsigned int val4 ;
    int ecode4 = 0 ;
    unsigned int val5 ;
    int ecode5 = 0 ;
    int res6 = SWIG_OLDOBJ ;
    Napi::TypedArray _global_typed_array ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->write(arg2,arg3,arg4,arg5,(std::string const &)*arg6,arg7,arg8);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res6)) delete arg6;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "::ssize_t""'");
      } 
      arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_write" "', argument " "3"" of type '" "::ssize_t""'");
      } 
      arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_write" "', argument " "4"" of type '" "size_t""'");
      } 
      arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
      if (!SWIG_IsOK(ecode5)) {
        SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_write" "', argument " "5"" of type '" "size_t""'");
      } 
      arg5 = static_cast< size_t >(val5);{
        {
          std::string *ptr = (std::string *)0;
          res6 = SWIG_AsPtr_std_string(info[4], &ptr);
          if (!SWIG_IsOK(res6)) {
            SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "Magick_Image_write" "', argument " "6"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "6"" of type '" "std::string const &""'"); 
          }
          arg6 = ptr;
        }
      }
      {
        {
          if (info[5].IsTypedArray()) {
            _global_typed_array = info[5].As<Napi::TypedArray>();
            arg7 = GetMagickStorageType(env, _global_typed_array);
            arg8 = reinterpret_cast<void*>(
              reinterpret_cast<uint8_t *>(_global_typed_array.ArrayBuffer().Data()) + _global_typed_array.ByteOffset());
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_write', argument 7 is not a TypedArray");
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        if (arg4 * arg5 * arg6->size() != _global_typed_array.ElementLength()) {
          SWIG_exception_fail(SWIG_IndexError,
            "The number of elements in the TypedArray does not match the number of pixels in the image");
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 6 || static_cast<int>(info.Length()) > 6) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writeAsync__SWIG_3.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writeAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_write__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  size_t arg4 ;
  size_t arg5 ;
  std::string *arg6 = 0 ;
  Magick::StorageType arg7 ;
  void *arg8 = (void *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  unsigned int val5 ;
  int ecode5 = 0 ;
  int res6 = SWIG_OLDOBJ ;
  Napi::TypedArray _global_typed_array ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "::ssize_t""'");
    } 
    arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Magick_Image_write" "', argument " "3"" of type '" "::ssize_t""'");
    } 
    arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_unsigned_SS_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "Magick_Image_write" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);ecode5 = SWIG_AsVal_unsigned_SS_int(info[3], &val5);
    if (!SWIG_IsOK(ecode5)) {
      SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "Magick_Image_write" "', argument " "5"" of type '" "size_t""'");
    } 
    arg5 = static_cast< size_t >(val5);{
      {
        std::string *ptr = (std::string *)0;
        res6 = SWIG_AsPtr_std_string(info[4], &ptr);
        if (!SWIG_IsOK(res6)) {
          SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "Magick_Image_write" "', argument " "6"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "6"" of type '" "std::string const &""'"); 
        }
        arg6 = ptr;
      }
    }
    {
      {
        if (info[5].IsTypedArray()) {
          _global_typed_array = info[5].As<Napi::TypedArray>();
          arg7 = GetMagickStorageType(env, _global_typed_array);
          arg8 = reinterpret_cast<void*>(
            reinterpret_cast<uint8_t *>(_global_typed_array.ArrayBuffer().Data()) + _global_typed_array.ByteOffset());
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'Magick_Image_write', argument 7 is not a TypedArray");
        }
      }
    }
    
    {
      if (arg4 * arg5 * arg6->size() != _global_typed_array.ElementLength()) {
        SWIG_exception_fail(SWIG_IndexError,
          "The number of elements in the TypedArray does not match the number of pixels in the image");
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->write(arg2,arg3,arg4,arg5,(std::string const &)*arg6,arg7,arg8);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res6)) delete arg6;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res6)) delete arg6;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res6)) delete arg6;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeAsync__SWIG_4(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_4_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_4_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->write((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_4_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writeAsync__SWIG_4.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writeAsync__SWIG_4_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writeAsync__SWIG_4_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_writeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 6 && static_cast<int>(info.Length()) <= 6) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeAsync__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeAsync__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function writeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_write__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_write" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_write" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_write" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->write((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_write(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_write__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_write__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_write__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_write__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_write__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_write__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 6 && static_cast<int>(info.Length()) <= 6) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_write__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_write__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_write__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_write__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function write.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeMaskAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->writeMask((Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_writeMask" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_writeMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_writeMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writeMaskAsync__SWIG_0.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeMask__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_writeMask" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_writeMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_writeMask" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->writeMask((Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeMaskAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Image result;
    
  public:
    _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Image const *)arg1)->writeMask();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_writeMask" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writeMaskAsync__SWIG_1.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writeMaskAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_writeMaskAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeMaskAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeMaskAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeMaskAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeMaskAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function writeMaskAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writeMask__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Image result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_writeMask" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Image const *)arg1)->writeMask();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Image(result)), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Image__wrap_Magick_Image_writeMask(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeMask__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeMask__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Image_writeMask__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Image_writeMask__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function writeMask.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writePixelsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_writePixelsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::QuantumType arg2 ;
    unsigned char *arg3 = (unsigned char *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_writePixelsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->writePixels(arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_writePixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_writePixels" "', argument " "2"" of type '" "Magick::QuantumType""'");
      } 
      arg2 = static_cast< Magick::QuantumType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_unsigned_char, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_writePixels" "', argument " "3"" of type '" "unsigned char *""'"); 
      }
      arg3 = reinterpret_cast< unsigned char * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_writePixelsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writePixelsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_writePixelsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_writePixelsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_writePixels(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::QuantumType arg2 ;
  unsigned char *arg3 = (unsigned char *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_writePixels.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_writePixels" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Image_writePixels" "', argument " "2"" of type '" "Magick::QuantumType""'");
    } 
    arg2 = static_cast< Magick::QuantumType >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_unsigned_char, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Magick_Image_writePixels" "', argument " "3"" of type '" "unsigned char *""'"); 
    }
    arg3 = reinterpret_cast< unsigned char * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->writePixels(arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_zoomAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_zoomAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_zoomAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->zoom((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_zoomAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_zoomAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_zoomAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_zoomAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_zoom(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_zoom.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Image_zoom" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->zoom((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_imageAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_imageAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    MagickCore::Image **result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_imageAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (MagickCore::Image **) &(arg1)->image();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_MagickCore___Image, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_image" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_imageAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_imageAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_imageAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_imageAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_image(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::Image **result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_image.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_image" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::Image **) &(arg1)->image();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_MagickCore___Image, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constImageAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_constImageAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    MagickCore::Image *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_constImageAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (MagickCore::Image *)((Magick::Image const *)arg1)->constImage();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___Image, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constImage" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_constImageAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constImageAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_constImageAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_constImageAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constImage(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::Image *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constImage.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constImage" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::Image *)((Magick::Image const *)arg1)->constImage();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___Image, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_imageInfoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_imageInfoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    MagickCore::ImageInfo *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_imageInfoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (MagickCore::ImageInfo *)(arg1)->imageInfo();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___ImageInfo, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_imageInfo" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_imageInfoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_imageInfoAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_imageInfoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_imageInfoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_imageInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::ImageInfo *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_imageInfo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_imageInfo" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::ImageInfo *)(arg1)->imageInfo();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___ImageInfo, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constImageInfoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_constImageInfoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    MagickCore::ImageInfo *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_constImageInfoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (MagickCore::ImageInfo *)((Magick::Image const *)arg1)->constImageInfo();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___ImageInfo, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constImageInfo" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_constImageInfoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constImageInfoAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_constImageInfoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_constImageInfoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constImageInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::ImageInfo *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constImageInfo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constImageInfo" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::ImageInfo *)((Magick::Image const *)arg1)->constImageInfo();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___ImageInfo, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_optionsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_optionsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Options *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_optionsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::Options *)(arg1)->options();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Options, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_options" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_optionsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_optionsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_optionsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_optionsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_options(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Options *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_options.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_options" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Options *)(arg1)->options();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Options, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constOptionsAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_constOptionsAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Options *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_constOptionsAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::Options *)((Magick::Image const *)arg1)->constOptions();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Options, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constOptions" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_constOptionsAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constOptionsAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_constOptionsAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_constOptionsAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constOptions(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Options *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constOptions.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constOptions" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::Options *)((Magick::Image const *)arg1)->constOptions();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__Options, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeInfoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_quantizeInfoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    MagickCore::QuantizeInfo *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_quantizeInfoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (MagickCore::QuantizeInfo *)(arg1)->quantizeInfo();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___QuantizeInfo, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeInfo" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_quantizeInfoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeInfoAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_quantizeInfoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_quantizeInfoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_quantizeInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::QuantizeInfo *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_quantizeInfo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_quantizeInfo" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::QuantizeInfo *)(arg1)->quantizeInfo();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___QuantizeInfo, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constQuantizeInfoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_constQuantizeInfoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    MagickCore::QuantizeInfo *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_constQuantizeInfoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (MagickCore::QuantizeInfo *)((Magick::Image const *)arg1)->constQuantizeInfo();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___QuantizeInfo, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constQuantizeInfo" "', argument " "1"" of type '" "Magick::Image const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_constQuantizeInfoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constQuantizeInfoAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_constQuantizeInfoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_constQuantizeInfoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_constQuantizeInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::QuantizeInfo *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_constQuantizeInfo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_constQuantizeInfo" "', argument " "1"" of type '" "Magick::Image const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::QuantizeInfo *)((Magick::Image const *)arg1)->constQuantizeInfo();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___QuantizeInfo, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modifyImageAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_modifyImageAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Image__wrap_Magick_Image_modifyImageAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->modifyImage();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modifyImage" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_modifyImageAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_modifyImageAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_modifyImageAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_modifyImageAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_modifyImage(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_modifyImage.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_modifyImage" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->modifyImage();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_replaceImageAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Image__wrap_Magick_Image_replaceImageAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    MagickCore::Image *arg2 = (MagickCore::Image *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    MagickCore::Image *result = 0 ;
    
  public:
    _Magick_Image__wrap_Magick_Image_replaceImageAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (MagickCore::Image *)(arg1)->replaceImage(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___Image, 0 |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_replaceImage" "', argument " "1"" of type '" "Magick::Image *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_MagickCore___Image, 0 |  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_replaceImage" "', argument " "2"" of type '" "MagickCore::Image *""'"); 
      }
      arg2 = reinterpret_cast< MagickCore::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Image__wrap_Magick_Image_replaceImageAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_replaceImageAsync.");
  }
  context = new _Magick_Image__wrap_Magick_Image_replaceImageAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Image__wrap_Magick_Image_replaceImageAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Image_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Image_replaceImage(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  MagickCore::Image *arg2 = (MagickCore::Image *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::Image *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Image_replaceImage.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Image_replaceImage" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2,SWIGTYPE_p_MagickCore___Image, 0 |  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Image_replaceImage" "', argument " "2"" of type '" "MagickCore::Image *""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::Image *)(arg1)->replaceImage(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___Image, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_area__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_area" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::area(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_area__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::area();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_area(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_area__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_area__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_area__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_area__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function area.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_disk__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_disk" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::disk(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_disk__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::disk();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_disk(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_disk__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_disk__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_disk__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_disk__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function disk.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_file__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_file" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::file(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_file__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::file();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_file(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_file__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_file__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_file__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_file__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function file.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_height__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_height" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::height(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_height__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::height();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_height(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_height__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_height__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_height__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_height__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function height.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_listLength__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_listLength" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::listLength(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_listLength__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::listLength();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_listLength(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_listLength__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_listLength__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_listLength__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_listLength__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function listLength.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_map__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_map" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::map(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_map__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::map();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_map(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_map__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_map__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_map__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_map__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function map.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_memory__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_memory" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::memory(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_memory__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::memory();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_memory(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_memory__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_memory__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_memory__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_memory__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function memory.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_thread__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_thread" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::thread(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_thread__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::thread();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_thread(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_thread__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_thread__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_thread__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_thread__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function thread.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_throttle__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_throttle" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::throttle(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_throttle__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::throttle();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_throttle(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_throttle__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_throttle__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_throttle__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_throttle__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function throttle.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_width__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MagickSizeType arg1 ;
  unsigned long long val1 ;
  int ecode1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    ecode1 = SWIG_AsVal_unsigned_SS_long_SS_long(info[0], &val1);
    if (!SWIG_IsOK(ecode1)) {
      SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Magick_ResourceLimits_width" "', argument " "1"" of type '" "Magick::MagickSizeType""'");
    } 
    arg1 = static_cast< Magick::MagickSizeType >(val1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::ResourceLimits::width(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ResourceLimits_width__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::MagickSizeType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::MagickSizeType)Magick::ResourceLimits::width();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_long_SS_long  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned long long >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_wrap_ResourceLimits__wrap_Magick_ResourceLimits_width(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_width__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_width__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ResourceLimits_width__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ResourceLimits_width__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function width.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::~_Magick_ResourceLimits_templ() {
  auto arg1 = reinterpret_cast<Magick::ResourceLimits *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_veto_ctor
template <typename SWIG_OBJ_WRAP>
_Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_Magick_ResourceLimits_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS as its
    // base abstract class
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  SWIG_Error(SWIG_ERROR, "Class ResourceLimits can not be instantiated");
  return;
  goto fail;
fail:
  return;
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ResourceLimits_templ<SWIG_OBJ_WRAP>::_Magick_ResourceLimits_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_global_getter
Napi::Value exports_Magick_CoderInfo_header_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(1));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
  return Napi::Value();
#endif
}


// js_getter
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::Magick_CoderInfo_AnyMatch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(Magick::CoderInfo::AnyMatch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_getter
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::Magick_CoderInfo_TrueMatch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(Magick::CoderInfo::TrueMatch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_getter
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::Magick_CoderInfo_FalseMatch_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(Magick::CoderInfo::FalseMatch));
    
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_CoderInfo__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoderInfo *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_CoderInfo__SWIG_0.");
  }
  {
    try {
      result = (Magick::CoderInfo *)new Magick::CoderInfo();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_CoderInfo__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::CoderInfo *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::CoderInfo *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_CoderInfo__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__CoderInfo,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_CoderInfo" "', argument " "1"" of type '" "Magick::CoderInfo const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_CoderInfo" "', argument " "1"" of type '" "Magick::CoderInfo const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);{
    try {
      result = (Magick::CoderInfo *)new Magick::CoderInfo((Magick::CoderInfo const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_CoderInfo__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::CoderInfo *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_CoderInfo__SWIG_2.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_CoderInfo" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_CoderInfo" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::CoderInfo *)new Magick::CoderInfo((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_Magick_CoderInfo_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__CoderInfo;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_CoderInfo__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_CoderInfo__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_CoderInfo__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_CoderInfo__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_CoderInfo__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_CoderInfo__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_CoderInfo");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_Magick_CoderInfo_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::~_Magick_CoderInfo_templ() {
  auto arg1 = reinterpret_cast<Magick::CoderInfo *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_clone(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  Magick::CoderInfo *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::CoderInfo *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_clone.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_clone" "', argument " "1"" of type '" "Magick::CoderInfo *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__CoderInfo,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_CoderInfo_clone" "', argument " "2"" of type '" "Magick::CoderInfo const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_CoderInfo_clone" "', argument " "2"" of type '" "Magick::CoderInfo const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::CoderInfo * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::CoderInfo *) &(arg1)->operator =((Magick::CoderInfo const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_canReadMultithreaded(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_canReadMultithreaded.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_canReadMultithreaded" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::CoderInfo const *)arg1)->canReadMultithreaded();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_canWriteMultithreaded(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_canWriteMultithreaded.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_canWriteMultithreaded" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::CoderInfo const *)arg1)->canWriteMultithreaded();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_description(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_description.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_description" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::CoderInfo const *)arg1)->description();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_isMultiFrame(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_isMultiFrame.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_isMultiFrame" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::CoderInfo const *)arg1)->isMultiFrame();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_isReadable(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_isReadable.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_isReadable" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::CoderInfo const *)arg1)->isReadable();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_isWritable(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_isWritable.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_isWritable" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::CoderInfo const *)arg1)->isWritable();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_mimeType(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_mimeType.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_mimeType" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::CoderInfo const *)arg1)->mimeType();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_module(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_module.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_module" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::CoderInfo const *)arg1)->module();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_name(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_name.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_name" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::CoderInfo const *)arg1)->name();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_CoderInfo_templ<SWIG_OBJ_WRAP>::_wrap_Magick_CoderInfo_unregister(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::CoderInfo *arg1 = (Magick::CoderInfo *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_CoderInfo_unregister.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_CoderInfo_unregister" "', argument " "1"" of type '" "Magick::CoderInfo const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::CoderInfo * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::CoderInfo const *)arg1)->unregister();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_Montage_templ<SWIG_OBJ_WRAP>::_Magick_Montage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__Montage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Montage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_Montage.");
  }
  {
    try {
      result = (Magick::Montage *)new Magick::Montage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_Montage_templ<SWIG_OBJ_WRAP>::_Magick_Montage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_Montage_templ<SWIG_OBJ_WRAP>::~_Magick_Montage_templ() {
  auto arg1 = reinterpret_cast<Magick::Montage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_backgroundColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->backgroundColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_backgroundColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_backgroundColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_backgroundColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_backgroundColorAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_backgroundColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_backgroundColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_backgroundColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_backgroundColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->backgroundColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_backgroundColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->backgroundColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_backgroundColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_backgroundColorAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_backgroundColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_backgroundColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_backgroundColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_backgroundColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_backgroundColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_backgroundColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function backgroundColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_backgroundColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_backgroundColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->backgroundColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_backgroundColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_backgroundColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_backgroundColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_backgroundColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_backgroundColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function backgroundColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fileNameAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fileName((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fileName" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_fileNameAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fileName__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fileName" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_fileName" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fileName((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fileNameAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->fileName();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fileName" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_fileNameAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_fileNameAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_fileNameAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fileNameAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fileNameAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fileNameAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fileNameAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fileNameAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fileName__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fileName" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->fileName();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_fileName(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fileName__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fileName__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fileName__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fileName__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fileName.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fillColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->fillColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fillColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_fillColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_fillColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_fillColorAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fillColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fillColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_fillColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_fillColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->fillColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fillColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->fillColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fillColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_fillColorAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_fillColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_fillColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fillColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fillColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fillColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fillColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fillColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_fillColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->fillColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_fillColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fillColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fillColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fillColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fillColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fillColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fontAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->font((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_font" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_font" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_font" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_fontAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_font__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_font" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_font" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_font" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->font((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_fontAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->font();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_font" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_fontAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_fontAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_fontAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fontAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fontAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_fontAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_fontAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function fontAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_font__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_font" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->font();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_font(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_font__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_font__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_font__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_font__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function font.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_geometryAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    Magick::Geometry from_string_temp2 ;
    int res10 = SWIG_OLDOBJ ;
    void *argp10 = 0 ;
    int res11 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->geometry((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
        // This is a generic typemap that applies
        // to all arguments called FROM_STRING
        if (info[0].IsString()) {
          // If the JS argument is a string
          {
            // We apply the default std::string typemap - it parses
            // its argument in a local temporary arg2
            std::string *arg2;
            {
              std::string *ptr = (std::string *)0;
              res10 = SWIG_AsPtr_std_string(info[0], &ptr);
              if (!SWIG_IsOK(res10)) {
                SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              if (!ptr) {
                SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "std::string const &""'"); 
              }
              arg2 = ptr;
            };
            // Construct the object from this string
            from_string_temp2 = Magick::Geometry(*arg2);
            // The string is not needed anymore
            delete arg2;
          }
          // We then assign the local temporary arg2 to the real arg2
          arg2 = &from_string_temp2;
        } else {
          // If the JS argument is not a string, then
          // default typemap applies
          res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
          if (!SWIG_IsOK(res11)) {
            SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          if (!argp10) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
          }
          arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
        }
        
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_geometryAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_geometry__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->geometry((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_geometryAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->geometry();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_geometryAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_geometryAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_geometryAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_geometryAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_geometryAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_geometryAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_geometryAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function geometryAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_geometry__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_geometry" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->geometry();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_geometry(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_geometry__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_geometry__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_geometry__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_geometry__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function geometry.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_gravityAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    Magick::GravityType arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->gravity(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_gravity" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Montage_gravity" "', argument " "2"" of type '" "Magick::GravityType""'");
      } 
      arg2 = static_cast< Magick::GravityType >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_gravityAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_gravity__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  Magick::GravityType arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_gravity" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Montage_gravity" "', argument " "2"" of type '" "Magick::GravityType""'");
    } 
    arg2 = static_cast< Magick::GravityType >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->gravity(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_gravityAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::GravityType result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (Magick::GravityType)((Magick::Montage const *)arg1)->gravity();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_gravity" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_gravityAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_gravityAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_gravityAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_gravityAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_gravityAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_gravityAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_gravityAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gravityAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_gravity__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::GravityType result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_gravity" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (Magick::GravityType)((Magick::Montage const *)arg1)->gravity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_gravity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_gravity__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_gravity__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_gravity__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_gravity__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function gravity.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_labelAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->label((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_label" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_label" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_label" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_labelAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_label__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_label" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_label" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_label" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->label((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_labelAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->label();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_label" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_labelAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_labelAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_labelAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_labelAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_labelAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_labelAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_labelAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function labelAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_label__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_label" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->label();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_label(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_label__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_label__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_label__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_label__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function label.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_pointSizeAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->pointSize(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_pointSize" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Montage_pointSize" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_pointSizeAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_pointSize__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_pointSize" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Montage_pointSize" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->pointSize(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_pointSizeAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->pointSize();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_pointSize" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_pointSizeAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_pointSizeAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_pointSizeAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_pointSizeAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_pointSizeAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_pointSizeAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_pointSizeAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function pointSizeAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_pointSize__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_pointSize" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->pointSize();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_pointSize(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_pointSize__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_pointSize__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_pointSize__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_pointSize__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function pointSize.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_shadowAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    bool arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    bool val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->shadow(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_shadow" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Montage_shadow" "', argument " "2"" of type '" "bool""'");
      } 
      arg2 = static_cast< bool >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_shadowAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_shadow__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_shadow" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_Montage_shadow" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->shadow(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_shadowAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    bool result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = (bool)((Magick::Montage const *)arg1)->shadow();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_shadow" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_shadowAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_shadowAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_shadowAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_shadowAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_shadowAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_shadowAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_shadowAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function shadowAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_shadow__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_shadow" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::Montage const *)arg1)->shadow();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_shadow(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_shadow__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_shadow__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_shadow__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_shadow__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function shadow.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_strokeColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->strokeColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_strokeColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_strokeColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_strokeColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_strokeColorAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_strokeColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_strokeColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_strokeColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_strokeColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->strokeColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_strokeColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->strokeColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_strokeColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_strokeColorAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_strokeColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_strokeColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_strokeColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_strokeColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_strokeColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_strokeColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_strokeColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_strokeColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->strokeColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_strokeColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_strokeColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_strokeColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_strokeColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_strokeColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function strokeColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_textureAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->texture((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_texture" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_texture" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_texture" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_textureAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_texture__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_texture" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_texture" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_texture" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->texture((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_textureAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->texture();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_texture" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_textureAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_textureAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_textureAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_textureAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_textureAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_textureAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_textureAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function textureAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_texture__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_texture" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->texture();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_texture(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_texture__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_texture__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_texture__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_texture__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function texture.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_tileAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->tile((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_tile" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_tile" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_tile" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_tileAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_tile__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_tile" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_tile" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_tile" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->tile((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_tileAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->tile();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_tile" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_tileAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_tileAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_tileAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_tileAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_tileAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_tileAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_tileAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function tileAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_tile__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_tile" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->tile();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_tile(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_tile__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_tile__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_tile__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_tile__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function tile.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_titleAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    std::string *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->title((std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_title" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_title" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_title" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_titleAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_title__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  std::string *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_title" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);{
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_title" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_title" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->title((std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_titleAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    std::string result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->title();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_title" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_titleAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_titleAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_titleAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_titleAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_titleAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_titleAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_titleAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function titleAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_title__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::string result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_title" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->title();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_std_string  SWIG_NAPI_FROM_CALL_ARGS(static_cast< std::string >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_title(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_title__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_title__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_title__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_title__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function title.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_transparentColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->transparentColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_transparentColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_transparentColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_transparentColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_transparentColorAsync__SWIG_0.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_transparentColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_transparentColor" "', argument " "1"" of type '" "Magick::Montage *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_transparentColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_transparentColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->transparentColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_transparentColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::Montage const *)arg1)->transparentColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_transparentColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_transparentColorAsync__SWIG_1.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_transparentColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_transparentColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_transparentColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_transparentColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_transparentColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_transparentColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function transparentColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_transparentColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_transparentColor" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::Montage const *)arg1)->transparentColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Montage__wrap_Magick_Montage_transparentColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_transparentColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_transparentColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_Montage_transparentColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_Montage_transparentColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function transparentColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_updateMontageInfoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_Montage__wrap_Magick_Montage_updateMontageInfoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Montage *arg1 = (Magick::Montage *) 0 ;
    MagickCore::MontageInfo *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_Montage__wrap_Magick_Montage_updateMontageInfoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::Montage const *)arg1)->updateMontageInfo(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_updateMontageInfo" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_MagickCore___MontageInfo,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
      }
      arg2 = reinterpret_cast< MagickCore::MontageInfo * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_Montage__wrap_Magick_Montage_updateMontageInfoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_updateMontageInfoAsync.");
  }
  context = new _Magick_Montage__wrap_Magick_Montage_updateMontageInfoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_Montage__wrap_Magick_Montage_updateMontageInfoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_Montage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_Montage_updateMontageInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Montage *arg1 = (Magick::Montage *) 0 ;
  MagickCore::MontageInfo *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_Montage_updateMontageInfo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__Montage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_Montage_updateMontageInfo" "', argument " "1"" of type '" "Magick::Montage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Montage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_MagickCore___MontageInfo,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_Montage_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_Montage_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::MontageInfo * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::Montage const *)arg1)->updateMontageInfo(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_Magick_MontageFramed_templ(const Napi::CallbackInfo &info)
:_Magick_Montage_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__MontageFramed;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::MontageFramed *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_MontageFramed.");
  }
  {
    try {
      result = (Magick::MontageFramed *)new Magick::MontageFramed();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_Magick_MontageFramed_templ(bool, const Napi::CallbackInfo &info)
:_Magick_Montage_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::~_Magick_MontageFramed_templ() {
  auto arg1 = reinterpret_cast<Magick::MontageFramed *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_matteColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->matteColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_matteColor" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_matteColorAsync__SWIG_0.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_matteColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_matteColor" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_matteColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->matteColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_matteColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::MontageFramed const *)arg1)->matteColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_matteColor" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_matteColorAsync__SWIG_1.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_matteColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_matteColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_matteColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_matteColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_matteColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function matteColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_matteColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_matteColor" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::MontageFramed const *)arg1)->matteColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_matteColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_matteColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_matteColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_matteColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_matteColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function matteColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderColorAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    Magick::Color *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->borderColor((Magick::Color const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderColor" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_borderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_borderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_borderColorAsync__SWIG_0.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderColor__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderColor" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Color,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_borderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_borderColor" "', argument " "2"" of type '" "Magick::Color const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Color * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->borderColor((Magick::Color const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderColorAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Color result;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::MontageFramed const *)arg1)->borderColor();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderColor" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_borderColorAsync__SWIG_1.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderColorAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderColorAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderColorAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderColorAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderColorAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function borderColorAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderColor__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Color result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderColor" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::MontageFramed const *)arg1)->borderColor();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Color(result)), SWIGTYPE_p_Magick__Color, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderColor(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderColor__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderColor__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderColor__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderColor__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function borderColor.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    size_t arg2 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    unsigned int val2 ;
    int ecode2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->borderWidth(arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderWidth" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
      if (!SWIG_IsOK(ecode2)) {
        SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_MontageFramed_borderWidth" "', argument " "2"" of type '" "size_t""'");
      } 
      arg2 = static_cast< size_t >(val2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderWidth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderWidth" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_MontageFramed_borderWidth" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->borderWidth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    size_t result;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::MontageFramed const *)arg1)->borderWidth();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderWidth" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderWidthAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderWidthAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function borderWidthAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_borderWidth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_borderWidth" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::MontageFramed const *)arg1)->borderWidth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_borderWidth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderWidth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderWidth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_borderWidth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_borderWidth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function borderWidth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    Magick::Geometry *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      (arg1)->frameGeometry((Magick::Geometry const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_frameGeometry__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "1"" of type '" "Magick::MontageFramed *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Geometry,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "2"" of type '" "Magick::Geometry const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Geometry * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->frameGeometry((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    Magick::Geometry result;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      result = ((Magick::MontageFramed const *)arg1)->frameGeometry();
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_frameGeometryAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_frameGeometryAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function frameGeometryAsync.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_frameGeometry__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_frameGeometry" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::MontageFramed const *)arg1)->frameGeometry();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_MontageFramed__wrap_Magick_MontageFramed_frameGeometry(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_frameGeometry__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_frameGeometry__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_MontageFramed_frameGeometry__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_MontageFramed_frameGeometry__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function frameGeometry.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_updateMontageInfoAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_MontageFramed__wrap_Magick_MontageFramed_updateMontageInfoAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
    MagickCore::MontageInfo *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_MontageFramed__wrap_Magick_MontageFramed_updateMontageInfoAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::MontageFramed const *)arg1)->updateMontageInfo(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_updateMontageInfo" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_MagickCore___MontageInfo,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
      }
      arg2 = reinterpret_cast< MagickCore::MontageInfo * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_MontageFramed__wrap_Magick_MontageFramed_updateMontageInfoAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_updateMontageInfoAsync.");
  }
  context = new _Magick_MontageFramed__wrap_Magick_MontageFramed_updateMontageInfoAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_MontageFramed__wrap_Magick_MontageFramed_updateMontageInfoAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_MontageFramed_templ<SWIG_OBJ_WRAP>::_wrap_Magick_MontageFramed_updateMontageInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::MontageFramed *arg1 = (Magick::MontageFramed *) 0 ;
  MagickCore::MontageInfo *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_MontageFramed_updateMontageInfo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__MontageFramed, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_MontageFramed_updateMontageInfo" "', argument " "1"" of type '" "Magick::MontageFramed const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::MontageFramed * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_MagickCore___MontageInfo,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_MontageFramed_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_MontageFramed_updateMontageInfo" "', argument " "2"" of type '" "MagickCore::MontageInfo &""'"); 
    }
    arg2 = reinterpret_cast< MagickCore::MontageInfo * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::MontageFramed const *)arg1)->updateMontageInfo(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_adaptiveBlurImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::adaptiveBlurImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_adaptiveBlurImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_adaptiveBlurImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_adaptiveBlurImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::adaptiveBlurImage *)new Magick::adaptiveBlurImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_adaptiveBlurImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::adaptiveBlurImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_adaptiveBlurImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_adaptiveBlurImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::adaptiveBlurImage *)new Magick::adaptiveBlurImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_adaptiveBlurImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::adaptiveBlurImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_adaptiveBlurImage__SWIG_2.");
  }
  {
    try {
      result = (Magick::adaptiveBlurImage *)new Magick::adaptiveBlurImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::_Magick_adaptiveBlurImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__adaptiveBlurImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_adaptiveBlurImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_adaptiveBlurImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_adaptiveBlurImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_adaptiveBlurImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_adaptiveBlurImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_adaptiveBlurImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_adaptiveBlurImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::_Magick_adaptiveBlurImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_adaptiveBlurImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_adaptiveBlurImage__wrap_Magick_adaptiveBlurImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::adaptiveBlurImage *arg1 = (Magick::adaptiveBlurImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_adaptiveBlurImage__wrap_Magick_adaptiveBlurImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::adaptiveBlurImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__adaptiveBlurImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_adaptiveBlurImage_call" "', argument " "1"" of type '" "Magick::adaptiveBlurImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::adaptiveBlurImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_adaptiveBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_adaptiveBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_adaptiveBlurImage__wrap_Magick_adaptiveBlurImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_adaptiveBlurImage_callAsync.");
  }
  context = new _Magick_adaptiveBlurImage__wrap_Magick_adaptiveBlurImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_adaptiveBlurImage__wrap_Magick_adaptiveBlurImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_adaptiveBlurImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::adaptiveBlurImage *arg1 = (Magick::adaptiveBlurImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_adaptiveBlurImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__adaptiveBlurImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_adaptiveBlurImage_call" "', argument " "1"" of type '" "Magick::adaptiveBlurImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::adaptiveBlurImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_adaptiveBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_adaptiveBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::adaptiveBlurImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_adaptiveBlurImage_templ<SWIG_OBJ_WRAP>::~_Magick_adaptiveBlurImage_templ() {
  auto arg1 = reinterpret_cast<Magick::adaptiveBlurImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveThresholdImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_adaptiveThresholdImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  ::ssize_t arg3 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::adaptiveThresholdImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_adaptiveThresholdImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_adaptiveThresholdImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_adaptiveThresholdImage" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_adaptiveThresholdImage" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);{
    try {
      result = (Magick::adaptiveThresholdImage *)new Magick::adaptiveThresholdImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveThresholdImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_adaptiveThresholdImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  Magick::adaptiveThresholdImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_adaptiveThresholdImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_adaptiveThresholdImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_adaptiveThresholdImage" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);{
    try {
      result = (Magick::adaptiveThresholdImage *)new Magick::adaptiveThresholdImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_adaptiveThresholdImage_templ<SWIG_OBJ_WRAP>::_Magick_adaptiveThresholdImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__adaptiveThresholdImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_adaptiveThresholdImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_adaptiveThresholdImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_adaptiveThresholdImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_adaptiveThresholdImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_adaptiveThresholdImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_adaptiveThresholdImage_templ<SWIG_OBJ_WRAP>::_Magick_adaptiveThresholdImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveThresholdImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_adaptiveThresholdImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_adaptiveThresholdImage__wrap_Magick_adaptiveThresholdImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::adaptiveThresholdImage *arg1 = (Magick::adaptiveThresholdImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_adaptiveThresholdImage__wrap_Magick_adaptiveThresholdImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::adaptiveThresholdImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__adaptiveThresholdImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_adaptiveThresholdImage_call" "', argument " "1"" of type '" "Magick::adaptiveThresholdImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::adaptiveThresholdImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_adaptiveThresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_adaptiveThresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_adaptiveThresholdImage__wrap_Magick_adaptiveThresholdImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_adaptiveThresholdImage_callAsync.");
  }
  context = new _Magick_adaptiveThresholdImage__wrap_Magick_adaptiveThresholdImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_adaptiveThresholdImage__wrap_Magick_adaptiveThresholdImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adaptiveThresholdImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_adaptiveThresholdImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::adaptiveThresholdImage *arg1 = (Magick::adaptiveThresholdImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_adaptiveThresholdImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__adaptiveThresholdImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_adaptiveThresholdImage_call" "', argument " "1"" of type '" "Magick::adaptiveThresholdImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::adaptiveThresholdImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_adaptiveThresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_adaptiveThresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::adaptiveThresholdImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_adaptiveThresholdImage_templ<SWIG_OBJ_WRAP>::~_Magick_adaptiveThresholdImage_templ() {
  auto arg1 = reinterpret_cast<Magick::adaptiveThresholdImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_addNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_addNoiseImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::NoiseType arg1 ;
  double arg2 ;
  int val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::addNoiseImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_addNoiseImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_addNoiseImage" "', argument " "1"" of type '" "Magick::NoiseType""'");
  } 
  arg1 = static_cast< Magick::NoiseType >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_addNoiseImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::addNoiseImage *)new Magick::addNoiseImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_addNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_addNoiseImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::NoiseType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::addNoiseImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_addNoiseImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_addNoiseImage" "', argument " "1"" of type '" "Magick::NoiseType""'");
  } 
  arg1 = static_cast< Magick::NoiseType >(val1);{
    try {
      result = (Magick::addNoiseImage *)new Magick::addNoiseImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_addNoiseImage_templ<SWIG_OBJ_WRAP>::_Magick_addNoiseImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__addNoiseImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_addNoiseImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_addNoiseImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_addNoiseImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_addNoiseImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_addNoiseImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_addNoiseImage_templ<SWIG_OBJ_WRAP>::_Magick_addNoiseImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_addNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_addNoiseImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_addNoiseImage__wrap_Magick_addNoiseImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::addNoiseImage *arg1 = (Magick::addNoiseImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_addNoiseImage__wrap_Magick_addNoiseImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::addNoiseImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__addNoiseImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_addNoiseImage_call" "', argument " "1"" of type '" "Magick::addNoiseImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::addNoiseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_addNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_addNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_addNoiseImage__wrap_Magick_addNoiseImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_addNoiseImage_callAsync.");
  }
  context = new _Magick_addNoiseImage__wrap_Magick_addNoiseImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_addNoiseImage__wrap_Magick_addNoiseImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_addNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_addNoiseImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::addNoiseImage *arg1 = (Magick::addNoiseImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_addNoiseImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__addNoiseImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_addNoiseImage_call" "', argument " "1"" of type '" "Magick::addNoiseImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::addNoiseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_addNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_addNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::addNoiseImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_addNoiseImage_templ<SWIG_OBJ_WRAP>::~_Magick_addNoiseImage_templ() {
  auto arg1 = reinterpret_cast<Magick::addNoiseImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_affineTransformImage_templ<SWIG_OBJ_WRAP>::_Magick_affineTransformImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__affineTransformImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DrawableAffine *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::affineTransformImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_affineTransformImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__DrawableAffine,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_affineTransformImage" "', argument " "1"" of type '" "Magick::DrawableAffine const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_affineTransformImage" "', argument " "1"" of type '" "Magick::DrawableAffine const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::DrawableAffine * >(argp1);{
    try {
      result = (Magick::affineTransformImage *)new Magick::affineTransformImage((Magick::DrawableAffine const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_affineTransformImage_templ<SWIG_OBJ_WRAP>::_Magick_affineTransformImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_affineTransformImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_affineTransformImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_affineTransformImage__wrap_Magick_affineTransformImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::affineTransformImage *arg1 = (Magick::affineTransformImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_affineTransformImage__wrap_Magick_affineTransformImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::affineTransformImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__affineTransformImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_affineTransformImage_call" "', argument " "1"" of type '" "Magick::affineTransformImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::affineTransformImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_affineTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_affineTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_affineTransformImage__wrap_Magick_affineTransformImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_affineTransformImage_callAsync.");
  }
  context = new _Magick_affineTransformImage__wrap_Magick_affineTransformImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_affineTransformImage__wrap_Magick_affineTransformImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_affineTransformImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_affineTransformImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::affineTransformImage *arg1 = (Magick::affineTransformImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_affineTransformImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__affineTransformImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_affineTransformImage_call" "', argument " "1"" of type '" "Magick::affineTransformImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::affineTransformImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_affineTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_affineTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::affineTransformImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_affineTransformImage_templ<SWIG_OBJ_WRAP>::~_Magick_affineTransformImage_templ() {
  auto arg1 = reinterpret_cast<Magick::affineTransformImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_annotateImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res11 = 0 ;
  Magick::annotateImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_annotateImage__SWIG_0.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::annotateImage *)new Magick::annotateImage((std::string const &)*arg1,(Magick::Geometry const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_annotateImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::GravityType arg3 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res11 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::annotateImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_annotateImage__SWIG_1.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_annotateImage" "', argument " "3"" of type '" "Magick::GravityType""'");
  } 
  arg3 = static_cast< Magick::GravityType >(val3);{
    try {
      result = (Magick::annotateImage *)new Magick::annotateImage((std::string const &)*arg1,(Magick::Geometry const &)*arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_annotateImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::GravityType arg3 ;
  double arg4 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res11 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  double val4 ;
  int ecode4 = 0 ;
  Magick::annotateImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_annotateImage__SWIG_2.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_annotateImage" "', argument " "3"" of type '" "Magick::GravityType""'");
  } 
  arg3 = static_cast< Magick::GravityType >(val3);ecode4 = SWIG_AsVal_double(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_annotateImage" "', argument " "4"" of type '" "double""'");
  } 
  arg4 = static_cast< double >(val4);{
    try {
      result = (Magick::annotateImage *)new Magick::annotateImage((std::string const &)*arg1,(Magick::Geometry const &)*arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_annotateImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::string *arg1 = 0 ;
  Magick::GravityType arg2 ;
  int res1 = SWIG_OLDOBJ ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::annotateImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_annotateImage__SWIG_3.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_annotateImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_annotateImage" "', argument " "2"" of type '" "Magick::GravityType""'");
  } 
  arg2 = static_cast< Magick::GravityType >(val2);{
    try {
      result = (Magick::annotateImage *)new Magick::annotateImage((std::string const &)*arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_Magick_annotateImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__annotateImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_annotateImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_annotateImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_annotateImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_annotateImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_annotateImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_annotateImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_annotateImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_annotateImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_annotateImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_Magick_annotateImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_annotateImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_annotateImage__wrap_Magick_annotateImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::annotateImage *arg1 = (Magick::annotateImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_annotateImage__wrap_Magick_annotateImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::annotateImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__annotateImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_annotateImage_call" "', argument " "1"" of type '" "Magick::annotateImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::annotateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_annotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_annotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_annotateImage__wrap_Magick_annotateImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_annotateImage_callAsync.");
  }
  context = new _Magick_annotateImage__wrap_Magick_annotateImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_annotateImage__wrap_Magick_annotateImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_annotateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_annotateImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::annotateImage *arg1 = (Magick::annotateImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_annotateImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__annotateImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_annotateImage_call" "', argument " "1"" of type '" "Magick::annotateImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::annotateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_annotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_annotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::annotateImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_annotateImage_templ<SWIG_OBJ_WRAP>::~_Magick_annotateImage_templ() {
  auto arg1 = reinterpret_cast<Magick::annotateImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_blurImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_blurImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::blurImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_blurImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_blurImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_blurImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::blurImage *)new Magick::blurImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_blurImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_blurImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::blurImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_blurImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_blurImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::blurImage *)new Magick::blurImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_blurImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_blurImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::blurImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_blurImage__SWIG_2.");
  }
  {
    try {
      result = (Magick::blurImage *)new Magick::blurImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_blurImage_templ<SWIG_OBJ_WRAP>::_Magick_blurImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__blurImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_blurImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_blurImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_blurImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_blurImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_blurImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_blurImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_blurImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_blurImage_templ<SWIG_OBJ_WRAP>::_Magick_blurImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_blurImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_blurImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_blurImage__wrap_Magick_blurImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::blurImage *arg1 = (Magick::blurImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_blurImage__wrap_Magick_blurImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::blurImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__blurImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_blurImage_call" "', argument " "1"" of type '" "Magick::blurImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::blurImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_blurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_blurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_blurImage__wrap_Magick_blurImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_blurImage_callAsync.");
  }
  context = new _Magick_blurImage__wrap_Magick_blurImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_blurImage__wrap_Magick_blurImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_blurImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_blurImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::blurImage *arg1 = (Magick::blurImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_blurImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__blurImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_blurImage_call" "', argument " "1"" of type '" "Magick::blurImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::blurImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_blurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_blurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::blurImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_blurImage_templ<SWIG_OBJ_WRAP>::~_Magick_blurImage_templ() {
  auto arg1 = reinterpret_cast<Magick::blurImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_borderImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_borderImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::borderImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_borderImage__SWIG_0.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_borderImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_borderImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_borderImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_borderImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::borderImage *)new Magick::borderImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_borderImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_borderImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::borderImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_borderImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::borderImage *)new Magick::borderImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_borderImage_templ<SWIG_OBJ_WRAP>::_Magick_borderImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__borderImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_borderImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_borderImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_borderImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_borderImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_borderImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_borderImage_templ<SWIG_OBJ_WRAP>::_Magick_borderImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_borderImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_borderImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_borderImage__wrap_Magick_borderImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::borderImage *arg1 = (Magick::borderImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_borderImage__wrap_Magick_borderImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::borderImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__borderImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_borderImage_call" "', argument " "1"" of type '" "Magick::borderImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::borderImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_borderImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_borderImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_borderImage__wrap_Magick_borderImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_borderImage_callAsync.");
  }
  context = new _Magick_borderImage__wrap_Magick_borderImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_borderImage__wrap_Magick_borderImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_borderImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_borderImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::borderImage *arg1 = (Magick::borderImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_borderImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__borderImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_borderImage_call" "', argument " "1"" of type '" "Magick::borderImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::borderImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_borderImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_borderImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::borderImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_borderImage_templ<SWIG_OBJ_WRAP>::~_Magick_borderImage_templ() {
  auto arg1 = reinterpret_cast<Magick::borderImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_channelImage_templ<SWIG_OBJ_WRAP>::_Magick_channelImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__channelImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::ChannelType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::channelImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_channelImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_channelImage" "', argument " "1"" of type '" "Magick::ChannelType""'");
  } 
  arg1 = static_cast< Magick::ChannelType >(val1);{
    try {
      result = (Magick::channelImage *)new Magick::channelImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_channelImage_templ<SWIG_OBJ_WRAP>::_Magick_channelImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_channelImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_channelImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_channelImage__wrap_Magick_channelImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::channelImage *arg1 = (Magick::channelImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_channelImage__wrap_Magick_channelImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::channelImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__channelImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_channelImage_call" "', argument " "1"" of type '" "Magick::channelImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::channelImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_channelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_channelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_channelImage__wrap_Magick_channelImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_channelImage_callAsync.");
  }
  context = new _Magick_channelImage__wrap_Magick_channelImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_channelImage__wrap_Magick_channelImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_channelImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_channelImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::channelImage *arg1 = (Magick::channelImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_channelImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__channelImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_channelImage_call" "', argument " "1"" of type '" "Magick::channelImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::channelImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_channelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_channelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::channelImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_channelImage_templ<SWIG_OBJ_WRAP>::~_Magick_channelImage_templ() {
  auto arg1 = reinterpret_cast<Magick::channelImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_charcoalImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::charcoalImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_charcoalImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_charcoalImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_charcoalImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::charcoalImage *)new Magick::charcoalImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_charcoalImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::charcoalImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_charcoalImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_charcoalImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::charcoalImage *)new Magick::charcoalImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_charcoalImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::charcoalImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_charcoalImage__SWIG_2.");
  }
  {
    try {
      result = (Magick::charcoalImage *)new Magick::charcoalImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::_Magick_charcoalImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__charcoalImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_charcoalImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_charcoalImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_charcoalImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_charcoalImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_charcoalImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_charcoalImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_charcoalImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::_Magick_charcoalImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_charcoalImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_charcoalImage__wrap_Magick_charcoalImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::charcoalImage *arg1 = (Magick::charcoalImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_charcoalImage__wrap_Magick_charcoalImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::charcoalImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__charcoalImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_charcoalImage_call" "', argument " "1"" of type '" "Magick::charcoalImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::charcoalImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_charcoalImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_charcoalImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_charcoalImage__wrap_Magick_charcoalImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_charcoalImage_callAsync.");
  }
  context = new _Magick_charcoalImage__wrap_Magick_charcoalImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_charcoalImage__wrap_Magick_charcoalImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_charcoalImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::charcoalImage *arg1 = (Magick::charcoalImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_charcoalImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__charcoalImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_charcoalImage_call" "', argument " "1"" of type '" "Magick::charcoalImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::charcoalImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_charcoalImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_charcoalImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::charcoalImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_charcoalImage_templ<SWIG_OBJ_WRAP>::~_Magick_charcoalImage_templ() {
  auto arg1 = reinterpret_cast<Magick::charcoalImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_chopImage_templ<SWIG_OBJ_WRAP>::_Magick_chopImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__chopImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::chopImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_chopImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_chopImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_chopImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_chopImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_chopImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::chopImage *)new Magick::chopImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_chopImage_templ<SWIG_OBJ_WRAP>::_Magick_chopImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chopImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chopImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_chopImage__wrap_Magick_chopImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::chopImage *arg1 = (Magick::chopImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_chopImage__wrap_Magick_chopImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::chopImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chopImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chopImage_call" "', argument " "1"" of type '" "Magick::chopImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::chopImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_chopImage__wrap_Magick_chopImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chopImage_callAsync.");
  }
  context = new _Magick_chopImage__wrap_Magick_chopImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_chopImage__wrap_Magick_chopImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chopImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chopImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::chopImage *arg1 = (Magick::chopImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chopImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chopImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chopImage_call" "', argument " "1"" of type '" "Magick::chopImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::chopImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::chopImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_chopImage_templ<SWIG_OBJ_WRAP>::~_Magick_chopImage_templ() {
  auto arg1 = reinterpret_cast<Magick::chopImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_cdlImage_templ<SWIG_OBJ_WRAP>::_Magick_cdlImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__cdlImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::cdlImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_cdlImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_cdlImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_cdlImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::cdlImage *)new Magick::cdlImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_cdlImage_templ<SWIG_OBJ_WRAP>::_Magick_cdlImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_cdlImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_cdlImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_cdlImage__wrap_Magick_cdlImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::cdlImage *arg1 = (Magick::cdlImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_cdlImage__wrap_Magick_cdlImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::cdlImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__cdlImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_cdlImage_call" "', argument " "1"" of type '" "Magick::cdlImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::cdlImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_cdlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_cdlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_cdlImage__wrap_Magick_cdlImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_cdlImage_callAsync.");
  }
  context = new _Magick_cdlImage__wrap_Magick_cdlImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_cdlImage__wrap_Magick_cdlImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_cdlImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_cdlImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::cdlImage *arg1 = (Magick::cdlImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_cdlImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__cdlImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_cdlImage_call" "', argument " "1"" of type '" "Magick::cdlImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::cdlImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_cdlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_cdlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::cdlImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_cdlImage_templ<SWIG_OBJ_WRAP>::~_Magick_cdlImage_templ() {
  auto arg1 = reinterpret_cast<Magick::cdlImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorizeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_colorizeImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  unsigned int arg1 ;
  unsigned int arg2 ;
  unsigned int arg3 ;
  Magick::Color *arg4 = 0 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  Magick::colorizeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_colorizeImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_colorizeImage" "', argument " "1"" of type '" "unsigned int""'");
  } 
  arg1 = static_cast< unsigned int >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_colorizeImage" "', argument " "2"" of type '" "unsigned int""'");
  } 
  arg2 = static_cast< unsigned int >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_colorizeImage" "', argument " "3"" of type '" "unsigned int""'");
  } 
  arg3 = static_cast< unsigned int >(val3);res4 = SWIG_ConvertPtr(info[3], &argp4, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res4)) {
    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_colorizeImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp4) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_colorizeImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  arg4 = reinterpret_cast< Magick::Color * >(argp4);{
    try {
      result = (Magick::colorizeImage *)new Magick::colorizeImage(arg1,arg2,arg3,(Magick::Color const &)*arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorizeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_colorizeImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  unsigned int arg1 ;
  Magick::Color *arg2 = 0 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::colorizeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_colorizeImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_colorizeImage" "', argument " "1"" of type '" "unsigned int""'");
  } 
  arg1 = static_cast< unsigned int >(val1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_colorizeImage" "', argument " "2"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp2) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_colorizeImage" "', argument " "2"" of type '" "Magick::Color const &""'"); 
  }
  arg2 = reinterpret_cast< Magick::Color * >(argp2);{
    try {
      result = (Magick::colorizeImage *)new Magick::colorizeImage(arg1,(Magick::Color const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_colorizeImage_templ<SWIG_OBJ_WRAP>::_Magick_colorizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__colorizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_colorizeImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_colorizeImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_colorizeImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_colorizeImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_colorizeImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_colorizeImage_templ<SWIG_OBJ_WRAP>::_Magick_colorizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_colorizeImage__wrap_Magick_colorizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::colorizeImage *arg1 = (Magick::colorizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_colorizeImage__wrap_Magick_colorizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::colorizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorizeImage_call" "', argument " "1"" of type '" "Magick::colorizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::colorizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_colorizeImage__wrap_Magick_colorizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorizeImage_callAsync.");
  }
  context = new _Magick_colorizeImage__wrap_Magick_colorizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_colorizeImage__wrap_Magick_colorizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::colorizeImage *arg1 = (Magick::colorizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorizeImage_call" "', argument " "1"" of type '" "Magick::colorizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::colorizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::colorizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_colorizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_colorizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::colorizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_colorMatrixImage_templ<SWIG_OBJ_WRAP>::_Magick_colorMatrixImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__colorMatrixImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  double *arg2 = (double *) 0 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::colorMatrixImage *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_colorMatrixImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_colorMatrixImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);res2 = SWIG_ConvertPtr(info[1], &argp2,SWIGTYPE_p_double, 0 |  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_colorMatrixImage" "', argument " "2"" of type '" "double const *""'"); 
  }
  arg2 = reinterpret_cast< double * >(argp2);{
    try {
      result = (Magick::colorMatrixImage *)new Magick::colorMatrixImage(arg1,(double const *)arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_colorMatrixImage_templ<SWIG_OBJ_WRAP>::_Magick_colorMatrixImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorMatrixImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorMatrixImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_colorMatrixImage__wrap_Magick_colorMatrixImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::colorMatrixImage *arg1 = (Magick::colorMatrixImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_colorMatrixImage__wrap_Magick_colorMatrixImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::colorMatrixImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorMatrixImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorMatrixImage_call" "', argument " "1"" of type '" "Magick::colorMatrixImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::colorMatrixImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorMatrixImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorMatrixImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_colorMatrixImage__wrap_Magick_colorMatrixImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorMatrixImage_callAsync.");
  }
  context = new _Magick_colorMatrixImage__wrap_Magick_colorMatrixImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_colorMatrixImage__wrap_Magick_colorMatrixImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorMatrixImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorMatrixImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::colorMatrixImage *arg1 = (Magick::colorMatrixImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorMatrixImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorMatrixImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorMatrixImage_call" "', argument " "1"" of type '" "Magick::colorMatrixImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::colorMatrixImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorMatrixImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorMatrixImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::colorMatrixImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_colorMatrixImage_templ<SWIG_OBJ_WRAP>::~_Magick_colorMatrixImage_templ() {
  auto arg1 = reinterpret_cast<Magick::colorMatrixImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_colorSpaceImage_templ<SWIG_OBJ_WRAP>::_Magick_colorSpaceImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__colorSpaceImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::ColorspaceType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::colorSpaceImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_colorSpaceImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_colorSpaceImage" "', argument " "1"" of type '" "Magick::ColorspaceType""'");
  } 
  arg1 = static_cast< Magick::ColorspaceType >(val1);{
    try {
      result = (Magick::colorSpaceImage *)new Magick::colorSpaceImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_colorSpaceImage_templ<SWIG_OBJ_WRAP>::_Magick_colorSpaceImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorSpaceImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorSpaceImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_colorSpaceImage__wrap_Magick_colorSpaceImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::colorSpaceImage *arg1 = (Magick::colorSpaceImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_colorSpaceImage__wrap_Magick_colorSpaceImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::colorSpaceImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorSpaceImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorSpaceImage_call" "', argument " "1"" of type '" "Magick::colorSpaceImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::colorSpaceImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorSpaceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorSpaceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_colorSpaceImage__wrap_Magick_colorSpaceImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorSpaceImage_callAsync.");
  }
  context = new _Magick_colorSpaceImage__wrap_Magick_colorSpaceImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_colorSpaceImage__wrap_Magick_colorSpaceImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorSpaceImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorSpaceImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::colorSpaceImage *arg1 = (Magick::colorSpaceImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorSpaceImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorSpaceImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorSpaceImage_call" "', argument " "1"" of type '" "Magick::colorSpaceImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::colorSpaceImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorSpaceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorSpaceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::colorSpaceImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_colorSpaceImage_templ<SWIG_OBJ_WRAP>::~_Magick_colorSpaceImage_templ() {
  auto arg1 = reinterpret_cast<Magick::colorSpaceImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_commentImage_templ<SWIG_OBJ_WRAP>::_Magick_commentImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__commentImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::commentImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_commentImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_commentImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_commentImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::commentImage *)new Magick::commentImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_commentImage_templ<SWIG_OBJ_WRAP>::_Magick_commentImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_commentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_commentImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_commentImage__wrap_Magick_commentImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::commentImage *arg1 = (Magick::commentImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_commentImage__wrap_Magick_commentImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::commentImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__commentImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_commentImage_call" "', argument " "1"" of type '" "Magick::commentImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::commentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_commentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_commentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_commentImage__wrap_Magick_commentImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_commentImage_callAsync.");
  }
  context = new _Magick_commentImage__wrap_Magick_commentImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_commentImage__wrap_Magick_commentImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_commentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_commentImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::commentImage *arg1 = (Magick::commentImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_commentImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__commentImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_commentImage_call" "', argument " "1"" of type '" "Magick::commentImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::commentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_commentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_commentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::commentImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_commentImage_templ<SWIG_OBJ_WRAP>::~_Magick_commentImage_templ() {
  auto arg1 = reinterpret_cast<Magick::commentImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_compositeImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  Magick::CompositeOperator arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  Magick::compositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_compositeImage__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_compositeImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_compositeImage" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_compositeImage" "', argument " "4"" of type '" "Magick::CompositeOperator""'");
  } 
  arg4 = static_cast< Magick::CompositeOperator >(val4);{
    try {
      result = (Magick::compositeImage *)new Magick::compositeImage((Magick::Image const &)*arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_compositeImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  ::ssize_t arg2 ;
  ::ssize_t arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::compositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_compositeImage__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_compositeImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_compositeImage" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);{
    try {
      result = (Magick::compositeImage *)new Magick::compositeImage((Magick::Image const &)*arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_compositeImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  Magick::CompositeOperator arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::compositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_compositeImage__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
    }
    
  }
  ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_compositeImage" "', argument " "3"" of type '" "Magick::CompositeOperator""'");
  } 
  arg3 = static_cast< Magick::CompositeOperator >(val3);{
    try {
      result = (Magick::compositeImage *)new Magick::compositeImage((Magick::Image const &)*arg1,(Magick::Geometry const &)*arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_compositeImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  Magick::compositeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_compositeImage__SWIG_3.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Geometry(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_compositeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
    }
    
  }
  {
    try {
      result = (Magick::compositeImage *)new Magick::compositeImage((Magick::Image const &)*arg1,(Magick::Geometry const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_Magick_compositeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__compositeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_compositeImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_compositeImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_compositeImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_compositeImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_compositeImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_compositeImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_compositeImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_compositeImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_compositeImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_Magick_compositeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_compositeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_compositeImage__wrap_Magick_compositeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::compositeImage *arg1 = (Magick::compositeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_compositeImage__wrap_Magick_compositeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::compositeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__compositeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_compositeImage_call" "', argument " "1"" of type '" "Magick::compositeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::compositeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_compositeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_compositeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_compositeImage__wrap_Magick_compositeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_compositeImage_callAsync.");
  }
  context = new _Magick_compositeImage__wrap_Magick_compositeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_compositeImage__wrap_Magick_compositeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compositeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_compositeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::compositeImage *arg1 = (Magick::compositeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_compositeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__compositeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_compositeImage_call" "', argument " "1"" of type '" "Magick::compositeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::compositeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_compositeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_compositeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::compositeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_compositeImage_templ<SWIG_OBJ_WRAP>::~_Magick_compositeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::compositeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_contrastImage_templ<SWIG_OBJ_WRAP>::_Magick_contrastImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__contrastImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::contrastImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_contrastImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_contrastImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::contrastImage *)new Magick::contrastImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_contrastImage_templ<SWIG_OBJ_WRAP>::_Magick_contrastImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_contrastImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_contrastImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_contrastImage__wrap_Magick_contrastImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::contrastImage *arg1 = (Magick::contrastImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_contrastImage__wrap_Magick_contrastImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::contrastImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__contrastImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_contrastImage_call" "', argument " "1"" of type '" "Magick::contrastImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::contrastImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_contrastImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_contrastImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_contrastImage__wrap_Magick_contrastImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_contrastImage_callAsync.");
  }
  context = new _Magick_contrastImage__wrap_Magick_contrastImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_contrastImage__wrap_Magick_contrastImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_contrastImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_contrastImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::contrastImage *arg1 = (Magick::contrastImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_contrastImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__contrastImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_contrastImage_call" "', argument " "1"" of type '" "Magick::contrastImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::contrastImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_contrastImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_contrastImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::contrastImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_contrastImage_templ<SWIG_OBJ_WRAP>::~_Magick_contrastImage_templ() {
  auto arg1 = reinterpret_cast<Magick::contrastImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_cropImage_templ<SWIG_OBJ_WRAP>::_Magick_cropImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__cropImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::cropImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_cropImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_cropImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_cropImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_cropImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_cropImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::cropImage *)new Magick::cropImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_cropImage_templ<SWIG_OBJ_WRAP>::_Magick_cropImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_cropImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_cropImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_cropImage__wrap_Magick_cropImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::cropImage *arg1 = (Magick::cropImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_cropImage__wrap_Magick_cropImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::cropImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__cropImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_cropImage_call" "', argument " "1"" of type '" "Magick::cropImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::cropImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_cropImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_cropImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_cropImage__wrap_Magick_cropImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_cropImage_callAsync.");
  }
  context = new _Magick_cropImage__wrap_Magick_cropImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_cropImage__wrap_Magick_cropImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_cropImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_cropImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::cropImage *arg1 = (Magick::cropImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_cropImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__cropImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_cropImage_call" "', argument " "1"" of type '" "Magick::cropImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::cropImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_cropImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_cropImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::cropImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_cropImage_templ<SWIG_OBJ_WRAP>::~_Magick_cropImage_templ() {
  auto arg1 = reinterpret_cast<Magick::cropImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_cycleColormapImage_templ<SWIG_OBJ_WRAP>::_Magick_cycleColormapImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__cycleColormapImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  ::ssize_t arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::cycleColormapImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_cycleColormapImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_cycleColormapImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);{
    try {
      result = (Magick::cycleColormapImage *)new Magick::cycleColormapImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_cycleColormapImage_templ<SWIG_OBJ_WRAP>::_Magick_cycleColormapImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_cycleColormapImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_cycleColormapImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::cycleColormapImage *arg1 = (Magick::cycleColormapImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_cycleColormapImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__cycleColormapImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_cycleColormapImage_call" "', argument " "1"" of type '" "Magick::cycleColormapImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::cycleColormapImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_cycleColormapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_cycleColormapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::cycleColormapImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_cycleColormapImage_templ<SWIG_OBJ_WRAP>::~_Magick_cycleColormapImage_templ() {
  auto arg1 = reinterpret_cast<Magick::cycleColormapImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_despeckleImage_templ<SWIG_OBJ_WRAP>::_Magick_despeckleImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__despeckleImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::despeckleImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_despeckleImage.");
  }
  {
    try {
      result = (Magick::despeckleImage *)new Magick::despeckleImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_despeckleImage_templ<SWIG_OBJ_WRAP>::_Magick_despeckleImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_despeckleImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_despeckleImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_despeckleImage__wrap_Magick_despeckleImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::despeckleImage *arg1 = (Magick::despeckleImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_despeckleImage__wrap_Magick_despeckleImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::despeckleImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__despeckleImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_despeckleImage_call" "', argument " "1"" of type '" "Magick::despeckleImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::despeckleImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_despeckleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_despeckleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_despeckleImage__wrap_Magick_despeckleImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_despeckleImage_callAsync.");
  }
  context = new _Magick_despeckleImage__wrap_Magick_despeckleImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_despeckleImage__wrap_Magick_despeckleImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_despeckleImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_despeckleImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::despeckleImage *arg1 = (Magick::despeckleImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_despeckleImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__despeckleImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_despeckleImage_call" "', argument " "1"" of type '" "Magick::despeckleImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::despeckleImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_despeckleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_despeckleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::despeckleImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_despeckleImage_templ<SWIG_OBJ_WRAP>::~_Magick_despeckleImage_templ() {
  auto arg1 = reinterpret_cast<Magick::despeckleImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_distortImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_distortImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DistortMethod arg1 ;
  size_t arg2 ;
  double *arg3 = (double *) 0 ;
  bool arg4 ;
  int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  Magick::distortImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_distortImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_distortImage" "', argument " "1"" of type '" "Magick::DistortMethod""'");
  } 
  arg1 = static_cast< Magick::DistortMethod >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_distortImage" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);res3 = SWIG_ConvertPtr(info[2], &argp3,SWIGTYPE_p_double, 0 |  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_distortImage" "', argument " "3"" of type '" "double const *""'"); 
  }
  arg3 = reinterpret_cast< double * >(argp3);ecode4 = SWIG_AsVal_bool(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_distortImage" "', argument " "4"" of type '" "bool""'");
  } 
  arg4 = static_cast< bool >(val4);{
    try {
      result = (Magick::distortImage *)new Magick::distortImage(arg1,arg2,(double const *)arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_distortImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_distortImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DistortMethod arg1 ;
  size_t arg2 ;
  double *arg3 = (double *) 0 ;
  int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  Magick::distortImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_distortImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_distortImage" "', argument " "1"" of type '" "Magick::DistortMethod""'");
  } 
  arg1 = static_cast< Magick::DistortMethod >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_distortImage" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);res3 = SWIG_ConvertPtr(info[2], &argp3,SWIGTYPE_p_double, 0 |  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_distortImage" "', argument " "3"" of type '" "double const *""'"); 
  }
  arg3 = reinterpret_cast< double * >(argp3);{
    try {
      result = (Magick::distortImage *)new Magick::distortImage(arg1,arg2,(double const *)arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_distortImage_templ<SWIG_OBJ_WRAP>::_Magick_distortImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__distortImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_distortImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_distortImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_distortImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_distortImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_distortImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_distortImage_templ<SWIG_OBJ_WRAP>::_Magick_distortImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_distortImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_distortImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_distortImage__wrap_Magick_distortImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::distortImage *arg1 = (Magick::distortImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_distortImage__wrap_Magick_distortImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::distortImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__distortImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_distortImage_call" "', argument " "1"" of type '" "Magick::distortImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::distortImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_distortImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_distortImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_distortImage__wrap_Magick_distortImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_distortImage_callAsync.");
  }
  context = new _Magick_distortImage__wrap_Magick_distortImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_distortImage__wrap_Magick_distortImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_distortImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_distortImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::distortImage *arg1 = (Magick::distortImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_distortImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__distortImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_distortImage_call" "', argument " "1"" of type '" "Magick::distortImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::distortImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_distortImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_distortImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::distortImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_distortImage_templ<SWIG_OBJ_WRAP>::~_Magick_distortImage_templ() {
  auto arg1 = reinterpret_cast<Magick::distortImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_drawImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_drawImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Drawable *arg1 = 0 ;
  Magick::drawImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_drawImage__SWIG_0.");
  }
  {
    {
      void *argp;
      // Convert from Magick::DrawableBase as this is what the user has passed
      if (!SWIG_IsOK(SWIG_ConvertPtr(info[0], &argp, SWIGTYPE_p_Magick__DrawableBase, 0))) {
        SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_drawImage', argument 1 of type 'Magick::Drawable const &'"); 
      }
      if (!argp) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference in method 'new_Magick_drawImage', argument 1 of type 'Magick::Drawable const &'"); 
      }
      // Construct the Magick::Drawable
      arg1 = new Magick::Drawable(* reinterpret_cast< Magick::DrawableBase * >(argp));
    }
  }
  {
    try {
      result = (Magick::drawImage *)new Magick::drawImage((Magick::Drawable const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  {
    delete arg1;
  }
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_drawImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_drawImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::DrawableList *arg1 = 0 ;
  Magick::drawImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_drawImage__SWIG_1.");
  }
  {
    {
      if (info[0].IsArray()) {
        arg1 = new std::vector<Magick::Drawable>;
        Napi::Array array = info[0].As<Napi::Array>();
        for (size_t i = 0; i < array.Length(); i++) {
          Magick::DrawableBase *p = nullptr;
          if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&p), SWIGTYPE_p_Magick__DrawableBase, 0)) || p == nullptr) {
            SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_drawImage', array element is not a Magick::Drawable");
          }
          // Emplace the newly constructed wrappers in the std::container
          arg1->emplace_back(Magick::Drawable(*p));
        }
      } else {
        SWIG_exception_fail(SWIG_TypeError, "in method 'new_Magick_drawImage', argument 1 is not an array");
      }
    }
  }
  {
    try {
      result = (Magick::drawImage *)new Magick::drawImage((Magick::DrawableList const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  {
    delete arg1;
  }
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_drawImage_templ<SWIG_OBJ_WRAP>::_Magick_drawImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__drawImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_drawImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_drawImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_drawImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_drawImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_drawImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_drawImage_templ<SWIG_OBJ_WRAP>::_Magick_drawImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_drawImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_drawImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_drawImage__wrap_Magick_drawImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::drawImage *arg1 = (Magick::drawImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_drawImage__wrap_Magick_drawImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::drawImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__drawImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_drawImage_call" "', argument " "1"" of type '" "Magick::drawImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::drawImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_drawImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_drawImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_drawImage__wrap_Magick_drawImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_drawImage_callAsync.");
  }
  context = new _Magick_drawImage__wrap_Magick_drawImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_drawImage__wrap_Magick_drawImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_drawImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_drawImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::drawImage *arg1 = (Magick::drawImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_drawImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__drawImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_drawImage_call" "', argument " "1"" of type '" "Magick::drawImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::drawImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_drawImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_drawImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::drawImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_drawImage_templ<SWIG_OBJ_WRAP>::~_Magick_drawImage_templ() {
  auto arg1 = reinterpret_cast<Magick::drawImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_edgeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_edgeImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::edgeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_edgeImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_edgeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::edgeImage *)new Magick::edgeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_edgeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_edgeImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::edgeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_edgeImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::edgeImage *)new Magick::edgeImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_edgeImage_templ<SWIG_OBJ_WRAP>::_Magick_edgeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__edgeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_edgeImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_edgeImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_edgeImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_edgeImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_edgeImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_edgeImage_templ<SWIG_OBJ_WRAP>::_Magick_edgeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_edgeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_edgeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_edgeImage__wrap_Magick_edgeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::edgeImage *arg1 = (Magick::edgeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_edgeImage__wrap_Magick_edgeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::edgeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__edgeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_edgeImage_call" "', argument " "1"" of type '" "Magick::edgeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::edgeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_edgeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_edgeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_edgeImage__wrap_Magick_edgeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_edgeImage_callAsync.");
  }
  context = new _Magick_edgeImage__wrap_Magick_edgeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_edgeImage__wrap_Magick_edgeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_edgeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_edgeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::edgeImage *arg1 = (Magick::edgeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_edgeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__edgeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_edgeImage_call" "', argument " "1"" of type '" "Magick::edgeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::edgeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_edgeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_edgeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::edgeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_edgeImage_templ<SWIG_OBJ_WRAP>::~_Magick_edgeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::edgeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_embossImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_embossImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::embossImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_embossImage__SWIG_0.");
  }
  {
    try {
      result = (Magick::embossImage *)new Magick::embossImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_embossImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_embossImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::embossImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_embossImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_embossImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_embossImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::embossImage *)new Magick::embossImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_embossImage_templ<SWIG_OBJ_WRAP>::_Magick_embossImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__embossImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_embossImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_embossImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_embossImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_embossImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_embossImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_embossImage_templ<SWIG_OBJ_WRAP>::_Magick_embossImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_embossImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_embossImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_embossImage__wrap_Magick_embossImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::embossImage *arg1 = (Magick::embossImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_embossImage__wrap_Magick_embossImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::embossImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__embossImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_embossImage_call" "', argument " "1"" of type '" "Magick::embossImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::embossImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_embossImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_embossImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_embossImage__wrap_Magick_embossImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_embossImage_callAsync.");
  }
  context = new _Magick_embossImage__wrap_Magick_embossImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_embossImage__wrap_Magick_embossImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_embossImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_embossImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::embossImage *arg1 = (Magick::embossImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_embossImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__embossImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_embossImage_call" "', argument " "1"" of type '" "Magick::embossImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::embossImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_embossImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_embossImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::embossImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_embossImage_templ<SWIG_OBJ_WRAP>::~_Magick_embossImage_templ() {
  auto arg1 = reinterpret_cast<Magick::embossImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_enhanceImage_templ<SWIG_OBJ_WRAP>::_Magick_enhanceImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__enhanceImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::enhanceImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_enhanceImage.");
  }
  {
    try {
      result = (Magick::enhanceImage *)new Magick::enhanceImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_enhanceImage_templ<SWIG_OBJ_WRAP>::_Magick_enhanceImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_enhanceImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_enhanceImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_enhanceImage__wrap_Magick_enhanceImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::enhanceImage *arg1 = (Magick::enhanceImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_enhanceImage__wrap_Magick_enhanceImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::enhanceImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__enhanceImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_enhanceImage_call" "', argument " "1"" of type '" "Magick::enhanceImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::enhanceImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_enhanceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_enhanceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_enhanceImage__wrap_Magick_enhanceImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_enhanceImage_callAsync.");
  }
  context = new _Magick_enhanceImage__wrap_Magick_enhanceImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_enhanceImage__wrap_Magick_enhanceImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_enhanceImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_enhanceImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::enhanceImage *arg1 = (Magick::enhanceImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_enhanceImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__enhanceImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_enhanceImage_call" "', argument " "1"" of type '" "Magick::enhanceImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::enhanceImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_enhanceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_enhanceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::enhanceImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_enhanceImage_templ<SWIG_OBJ_WRAP>::~_Magick_enhanceImage_templ() {
  auto arg1 = reinterpret_cast<Magick::enhanceImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_equalizeImage_templ<SWIG_OBJ_WRAP>::_Magick_equalizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__equalizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::equalizeImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_equalizeImage.");
  }
  {
    try {
      result = (Magick::equalizeImage *)new Magick::equalizeImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_equalizeImage_templ<SWIG_OBJ_WRAP>::_Magick_equalizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_equalizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_equalizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_equalizeImage__wrap_Magick_equalizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::equalizeImage *arg1 = (Magick::equalizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_equalizeImage__wrap_Magick_equalizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::equalizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__equalizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_equalizeImage_call" "', argument " "1"" of type '" "Magick::equalizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::equalizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_equalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_equalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_equalizeImage__wrap_Magick_equalizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_equalizeImage_callAsync.");
  }
  context = new _Magick_equalizeImage__wrap_Magick_equalizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_equalizeImage__wrap_Magick_equalizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_equalizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_equalizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::equalizeImage *arg1 = (Magick::equalizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_equalizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__equalizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_equalizeImage_call" "', argument " "1"" of type '" "Magick::equalizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::equalizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_equalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_equalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::equalizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_equalizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_equalizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::equalizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_fillColorImage_templ<SWIG_OBJ_WRAP>::_Magick_fillColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__fillColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::fillColorImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_fillColorImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_fillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_fillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_fillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_fillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::fillColorImage *)new Magick::fillColorImage((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_fillColorImage_templ<SWIG_OBJ_WRAP>::_Magick_fillColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_fillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_fillColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::fillColorImage *arg1 = (Magick::fillColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_fillColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__fillColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_fillColorImage_call" "', argument " "1"" of type '" "Magick::fillColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::fillColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_fillColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_fillColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::fillColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_fillColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_fillColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::fillColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_flipImage_templ<SWIG_OBJ_WRAP>::_Magick_flipImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__flipImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::flipImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_flipImage.");
  }
  {
    try {
      result = (Magick::flipImage *)new Magick::flipImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_flipImage_templ<SWIG_OBJ_WRAP>::_Magick_flipImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_flipImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_flipImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_flipImage__wrap_Magick_flipImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::flipImage *arg1 = (Magick::flipImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_flipImage__wrap_Magick_flipImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::flipImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__flipImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_flipImage_call" "', argument " "1"" of type '" "Magick::flipImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::flipImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_flipImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_flipImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_flipImage__wrap_Magick_flipImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_flipImage_callAsync.");
  }
  context = new _Magick_flipImage__wrap_Magick_flipImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_flipImage__wrap_Magick_flipImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_flipImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_flipImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::flipImage *arg1 = (Magick::flipImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_flipImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__flipImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_flipImage_call" "', argument " "1"" of type '" "Magick::flipImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::flipImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_flipImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_flipImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::flipImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_flipImage_templ<SWIG_OBJ_WRAP>::~_Magick_flipImage_templ() {
  auto arg1 = reinterpret_cast<Magick::flipImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillAlphaImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillAlphaImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  unsigned int arg3 ;
  Magick::Color *arg4 = 0 ;
  bool arg5 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  Magick::floodFillAlphaImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillAlphaImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "3"" of type '" "unsigned int""'");
  } 
  arg3 = static_cast< unsigned int >(val3);res4 = SWIG_ConvertPtr(info[3], &argp4, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res4)) {
    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp4) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillAlphaImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "5"" of type '" "bool""'");
  } 
  arg5 = static_cast< bool >(val5);{
    try {
      result = (Magick::floodFillAlphaImage *)new Magick::floodFillAlphaImage(arg1,arg2,arg3,(Magick::Color const &)*arg4,arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillAlphaImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillAlphaImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  unsigned int arg3 ;
  Magick::Color *arg4 = 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  unsigned int val3 ;
  int ecode3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  Magick::floodFillAlphaImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillAlphaImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);ecode3 = SWIG_AsVal_unsigned_SS_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "3"" of type '" "unsigned int""'");
  } 
  arg3 = static_cast< unsigned int >(val3);res4 = SWIG_ConvertPtr(info[3], &argp4, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res4)) {
    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_floodFillAlphaImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp4) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillAlphaImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  arg4 = reinterpret_cast< Magick::Color * >(argp4);{
    try {
      result = (Magick::floodFillAlphaImage *)new Magick::floodFillAlphaImage(arg1,arg2,arg3,(Magick::Color const &)*arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillAlphaImage_templ<SWIG_OBJ_WRAP>::_Magick_floodFillAlphaImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__floodFillAlphaImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillAlphaImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillAlphaImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillAlphaImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillAlphaImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_floodFillAlphaImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillAlphaImage_templ<SWIG_OBJ_WRAP>::_Magick_floodFillAlphaImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillAlphaImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_floodFillAlphaImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_floodFillAlphaImage__wrap_Magick_floodFillAlphaImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::floodFillAlphaImage *arg1 = (Magick::floodFillAlphaImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_floodFillAlphaImage__wrap_Magick_floodFillAlphaImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::floodFillAlphaImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__floodFillAlphaImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_floodFillAlphaImage_call" "', argument " "1"" of type '" "Magick::floodFillAlphaImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::floodFillAlphaImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_floodFillAlphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_floodFillAlphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_floodFillAlphaImage__wrap_Magick_floodFillAlphaImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_floodFillAlphaImage_callAsync.");
  }
  context = new _Magick_floodFillAlphaImage__wrap_Magick_floodFillAlphaImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_floodFillAlphaImage__wrap_Magick_floodFillAlphaImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillAlphaImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_floodFillAlphaImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::floodFillAlphaImage *arg1 = (Magick::floodFillAlphaImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_floodFillAlphaImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__floodFillAlphaImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_floodFillAlphaImage_call" "', argument " "1"" of type '" "Magick::floodFillAlphaImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::floodFillAlphaImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_floodFillAlphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_floodFillAlphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::floodFillAlphaImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillAlphaImage_templ<SWIG_OBJ_WRAP>::~_Magick_floodFillAlphaImage_templ() {
  auto arg1 = reinterpret_cast<Magick::floodFillAlphaImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Color(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp10);;
    }
    
  }
  ecode3 = SWIG_AsVal_bool(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_floodFillColorImage" "', argument " "3"" of type '" "bool""'");
  } 
  arg3 = static_cast< bool >(val3);{
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage((Magick::Geometry const &)*arg1,(Magick::Color const &)*arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Color(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp10);;
    }
    
  }
  {
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage((Magick::Geometry const &)*arg1,(Magick::Color const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Color *arg3 = 0 ;
  bool arg4 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillColorImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[2].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg3
        std::string *arg3;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        };
        // Construct the object from this string
        from_string_temp3 = Magick::Color(*arg3);
        // The string is not needed anymore
        delete arg3;
      }
      // We then assign the local temporary arg3 to the real arg3
      arg3 = &from_string_temp3;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[2], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  ecode4 = SWIG_AsVal_bool(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_floodFillColorImage" "', argument " "4"" of type '" "bool""'");
  } 
  arg4 = static_cast< bool >(val4);{
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage(arg1,arg2,(Magick::Color const &)*arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Color *arg3 = 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillColorImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[2].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg3
        std::string *arg3;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        };
        // Construct the object from this string
        from_string_temp3 = Magick::Color(*arg3);
        // The string is not needed anymore
        delete arg3;
      }
      // We then assign the local temporary arg3 to the real arg3
      arg3 = &from_string_temp3;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[2], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage(arg1,arg2,(Magick::Color const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_4.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Color(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp10);;
    }
    
  }
  res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillColorImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_bool(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_floodFillColorImage" "', argument " "4"" of type '" "bool""'");
  } 
  arg4 = static_cast< bool >(val4);{
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage((Magick::Geometry const &)*arg1,(Magick::Color const &)*arg2,(Magick::Color const &)*arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_5.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res10 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res10)) {
            SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Color(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res11 = SWIG_ConvertPtr(info[1], &argp10, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res11)) {
        SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp10) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp10);;
    }
    
  }
  res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillColorImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Color * >(argp3);{
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage((Magick::Geometry const &)*arg1,(Magick::Color const &)*arg2,(Magick::Color const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Color *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  bool arg5 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_6.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillColorImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[2].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg3
        std::string *arg3;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        };
        // Construct the object from this string
        from_string_temp3 = Magick::Color(*arg3);
        // The string is not needed anymore
        delete arg3;
      }
      // We then assign the local temporary arg3 to the real arg3
      arg3 = &from_string_temp3;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[2], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  res4 = SWIG_ConvertPtr(info[3], &argp4, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res4)) {
    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_floodFillColorImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp4) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_floodFillColorImage" "', argument " "5"" of type '" "bool""'");
  } 
  arg5 = static_cast< bool >(val5);{
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage(arg1,arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4,arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillColorImage__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Color *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  Magick::floodFillColorImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillColorImage__SWIG_7.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillColorImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[2].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg3
        std::string *arg3;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        };
        // Construct the object from this string
        from_string_temp3 = Magick::Color(*arg3);
        // The string is not needed anymore
        delete arg3;
      }
      // We then assign the local temporary arg3 to the real arg3
      arg3 = &from_string_temp3;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[2], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  res4 = SWIG_ConvertPtr(info[3], &argp4, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res4)) {
    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_floodFillColorImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp4) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillColorImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  arg4 = reinterpret_cast< Magick::Color * >(argp4);{
    try {
      result = (Magick::floodFillColorImage *)new Magick::floodFillColorImage(arg1,arg2,(Magick::Color const &)*arg3,(Magick::Color const &)*arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_Magick_floodFillColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__floodFillColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillColorImage__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillColorImage__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_floodFillColorImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_Magick_floodFillColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_floodFillColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::floodFillColorImage *arg1 = (Magick::floodFillColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_floodFillColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__floodFillColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_floodFillColorImage_call" "', argument " "1"" of type '" "Magick::floodFillColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::floodFillColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_floodFillColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_floodFillColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::floodFillColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_floodFillColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::floodFillColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Image *arg3 = 0 ;
  bool arg4 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Image * >(argp3);ecode4 = SWIG_AsVal_bool(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_floodFillTextureImage" "', argument " "4"" of type '" "bool""'");
  } 
  arg4 = static_cast< bool >(val4);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage(arg1,arg2,(Magick::Image const &)*arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Image *arg3 = 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Image * >(argp3);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage(arg1,arg2,(Magick::Image const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  bool arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp2) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_bool(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "bool""'");
  } 
  arg3 = static_cast< bool >(val3);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage((Magick::Geometry const &)*arg1,(Magick::Image const &)*arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_3.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp2) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  arg2 = reinterpret_cast< Magick::Image * >(argp2);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage((Magick::Geometry const &)*arg1,(Magick::Image const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Image *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  bool arg5 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  bool val5 ;
  int ecode5 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 5 || static_cast<int>(info.Length()) > 5) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_4.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Image * >(argp3);res4 = SWIG_ConvertPtr(info[3], &argp4, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res4)) {
    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_floodFillTextureImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp4) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  arg4 = reinterpret_cast< Magick::Color * >(argp4);ecode5 = SWIG_AsVal_bool(info[4], &val5);
  if (!SWIG_IsOK(ecode5)) {
    SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_Magick_floodFillTextureImage" "', argument " "5"" of type '" "bool""'");
  } 
  arg5 = static_cast< bool >(val5);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage(arg1,arg2,(Magick::Image const &)*arg3,(Magick::Color const &)*arg4,arg5);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_5(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Image *arg3 = 0 ;
  Magick::Color *arg4 = 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_5.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Image const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Image * >(argp3);res4 = SWIG_ConvertPtr(info[3], &argp4, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res4)) {
    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Magick_floodFillTextureImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp4) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "4"" of type '" "Magick::Color const &""'"); 
  }
  arg4 = reinterpret_cast< Magick::Color * >(argp4);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage(arg1,arg2,(Magick::Image const &)*arg3,(Magick::Color const &)*arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_6(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  bool arg4 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_6.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp2) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  arg2 = reinterpret_cast< Magick::Image * >(argp2);res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Color * >(argp3);ecode4 = SWIG_AsVal_bool(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_floodFillTextureImage" "', argument " "4"" of type '" "bool""'");
  } 
  arg4 = static_cast< bool >(val4);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage((Magick::Geometry const &)*arg1,(Magick::Image const &)*arg2,(Magick::Color const &)*arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_floodFillTextureImage__SWIG_7(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Image *arg2 = 0 ;
  Magick::Color *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  Magick::floodFillTextureImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_floodFillTextureImage__SWIG_7.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp2) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
  }
  arg2 = reinterpret_cast< Magick::Image * >(argp2);res3 = SWIG_ConvertPtr(info[2], &argp3, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res3)) {
    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp3) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_floodFillTextureImage" "', argument " "3"" of type '" "Magick::Color const &""'"); 
  }
  arg3 = reinterpret_cast< Magick::Color * >(argp3);{
    try {
      result = (Magick::floodFillTextureImage *)new Magick::floodFillTextureImage((Magick::Geometry const &)*arg1,(Magick::Image const &)*arg2,(Magick::Color const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_Magick_floodFillTextureImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__floodFillTextureImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 5 && static_cast<int>(info.Length()) <= 5) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_5(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_5(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_6(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_6(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_floodFillTextureImage__SWIG_7(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_floodFillTextureImage__SWIG_7(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_floodFillTextureImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_Magick_floodFillTextureImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_floodFillTextureImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_floodFillTextureImage__wrap_Magick_floodFillTextureImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::floodFillTextureImage *arg1 = (Magick::floodFillTextureImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_floodFillTextureImage__wrap_Magick_floodFillTextureImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::floodFillTextureImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__floodFillTextureImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_floodFillTextureImage_call" "', argument " "1"" of type '" "Magick::floodFillTextureImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::floodFillTextureImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_floodFillTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_floodFillTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_floodFillTextureImage__wrap_Magick_floodFillTextureImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_floodFillTextureImage_callAsync.");
  }
  context = new _Magick_floodFillTextureImage__wrap_Magick_floodFillTextureImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_floodFillTextureImage__wrap_Magick_floodFillTextureImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_floodFillTextureImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::floodFillTextureImage *arg1 = (Magick::floodFillTextureImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_floodFillTextureImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__floodFillTextureImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_floodFillTextureImage_call" "', argument " "1"" of type '" "Magick::floodFillTextureImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::floodFillTextureImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_floodFillTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_floodFillTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::floodFillTextureImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_floodFillTextureImage_templ<SWIG_OBJ_WRAP>::~_Magick_floodFillTextureImage_templ() {
  auto arg1 = reinterpret_cast<Magick::floodFillTextureImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_flopImage_templ<SWIG_OBJ_WRAP>::_Magick_flopImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__flopImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::flopImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_flopImage.");
  }
  {
    try {
      result = (Magick::flopImage *)new Magick::flopImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_flopImage_templ<SWIG_OBJ_WRAP>::_Magick_flopImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_flopImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_flopImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_flopImage__wrap_Magick_flopImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::flopImage *arg1 = (Magick::flopImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_flopImage__wrap_Magick_flopImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::flopImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__flopImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_flopImage_call" "', argument " "1"" of type '" "Magick::flopImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::flopImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_flopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_flopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_flopImage__wrap_Magick_flopImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_flopImage_callAsync.");
  }
  context = new _Magick_flopImage__wrap_Magick_flopImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_flopImage__wrap_Magick_flopImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_flopImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_flopImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::flopImage *arg1 = (Magick::flopImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_flopImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__flopImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_flopImage_call" "', argument " "1"" of type '" "Magick::flopImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::flopImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_flopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_flopImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::flopImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_flopImage_templ<SWIG_OBJ_WRAP>::~_Magick_flopImage_templ() {
  auto arg1 = reinterpret_cast<Magick::flopImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_frameImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_frameImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::frameImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_frameImage__SWIG_0.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_frameImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_frameImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_frameImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_frameImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::frameImage *)new Magick::frameImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_frameImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_frameImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::frameImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_frameImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::frameImage *)new Magick::frameImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_frameImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_frameImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  ::ssize_t arg3 ;
  ::ssize_t arg4 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  Magick::frameImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_frameImage__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_frameImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_frameImage" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_frameImage" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_frameImage" "', argument " "4"" of type '" "::ssize_t""'");
  } 
  arg4 = static_cast< ::ssize_t >(val4);{
    try {
      result = (Magick::frameImage *)new Magick::frameImage(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_frameImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_frameImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  ::ssize_t arg3 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::frameImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_frameImage__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_frameImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_frameImage" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_frameImage" "', argument " "3"" of type '" "::ssize_t""'");
  } 
  arg3 = static_cast< ::ssize_t >(val3);{
    try {
      result = (Magick::frameImage *)new Magick::frameImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_frameImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_frameImage__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  size_t arg2 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  Magick::frameImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_frameImage__SWIG_4.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_frameImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_frameImage" "', argument " "2"" of type '" "size_t""'");
  } 
  arg2 = static_cast< size_t >(val2);{
    try {
      result = (Magick::frameImage *)new Magick::frameImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_frameImage_templ<SWIG_OBJ_WRAP>::_Magick_frameImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__frameImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_frameImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_frameImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_frameImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_frameImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_frameImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_frameImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_frameImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_frameImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_frameImage__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_frameImage__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_frameImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_frameImage_templ<SWIG_OBJ_WRAP>::_Magick_frameImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_frameImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_frameImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_frameImage__wrap_Magick_frameImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::frameImage *arg1 = (Magick::frameImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_frameImage__wrap_Magick_frameImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::frameImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__frameImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_frameImage_call" "', argument " "1"" of type '" "Magick::frameImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::frameImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_frameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_frameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_frameImage__wrap_Magick_frameImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_frameImage_callAsync.");
  }
  context = new _Magick_frameImage__wrap_Magick_frameImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_frameImage__wrap_Magick_frameImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_frameImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_frameImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::frameImage *arg1 = (Magick::frameImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_frameImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__frameImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_frameImage_call" "', argument " "1"" of type '" "Magick::frameImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::frameImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_frameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_frameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::frameImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_frameImage_templ<SWIG_OBJ_WRAP>::~_Magick_frameImage_templ() {
  auto arg1 = reinterpret_cast<Magick::frameImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gammaImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_gammaImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::gammaImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_gammaImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_gammaImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::gammaImage *)new Magick::gammaImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gammaImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_gammaImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::gammaImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_gammaImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_gammaImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_gammaImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_gammaImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::gammaImage *)new Magick::gammaImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_gammaImage_templ<SWIG_OBJ_WRAP>::_Magick_gammaImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__gammaImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_gammaImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_gammaImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_gammaImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_gammaImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_gammaImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_gammaImage_templ<SWIG_OBJ_WRAP>::_Magick_gammaImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gammaImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_gammaImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_gammaImage__wrap_Magick_gammaImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::gammaImage *arg1 = (Magick::gammaImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_gammaImage__wrap_Magick_gammaImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::gammaImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__gammaImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_gammaImage_call" "', argument " "1"" of type '" "Magick::gammaImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::gammaImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_gammaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_gammaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_gammaImage__wrap_Magick_gammaImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_gammaImage_callAsync.");
  }
  context = new _Magick_gammaImage__wrap_Magick_gammaImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_gammaImage__wrap_Magick_gammaImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gammaImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_gammaImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::gammaImage *arg1 = (Magick::gammaImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_gammaImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__gammaImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_gammaImage_call" "', argument " "1"" of type '" "Magick::gammaImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::gammaImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_gammaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_gammaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::gammaImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_gammaImage_templ<SWIG_OBJ_WRAP>::~_Magick_gammaImage_templ() {
  auto arg1 = reinterpret_cast<Magick::gammaImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_gaussianBlurImage_templ<SWIG_OBJ_WRAP>::_Magick_gaussianBlurImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__gaussianBlurImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::gaussianBlurImage *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_gaussianBlurImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_gaussianBlurImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_gaussianBlurImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::gaussianBlurImage *)new Magick::gaussianBlurImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_gaussianBlurImage_templ<SWIG_OBJ_WRAP>::_Magick_gaussianBlurImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gaussianBlurImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_gaussianBlurImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_gaussianBlurImage__wrap_Magick_gaussianBlurImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::gaussianBlurImage *arg1 = (Magick::gaussianBlurImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_gaussianBlurImage__wrap_Magick_gaussianBlurImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::gaussianBlurImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__gaussianBlurImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_gaussianBlurImage_call" "', argument " "1"" of type '" "Magick::gaussianBlurImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::gaussianBlurImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_gaussianBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_gaussianBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_gaussianBlurImage__wrap_Magick_gaussianBlurImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_gaussianBlurImage_callAsync.");
  }
  context = new _Magick_gaussianBlurImage__wrap_Magick_gaussianBlurImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_gaussianBlurImage__wrap_Magick_gaussianBlurImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gaussianBlurImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_gaussianBlurImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::gaussianBlurImage *arg1 = (Magick::gaussianBlurImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_gaussianBlurImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__gaussianBlurImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_gaussianBlurImage_call" "', argument " "1"" of type '" "Magick::gaussianBlurImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::gaussianBlurImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_gaussianBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_gaussianBlurImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::gaussianBlurImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_gaussianBlurImage_templ<SWIG_OBJ_WRAP>::~_Magick_gaussianBlurImage_templ() {
  auto arg1 = reinterpret_cast<Magick::gaussianBlurImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_haldClutImage_templ<SWIG_OBJ_WRAP>::_Magick_haldClutImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__haldClutImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::haldClutImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_haldClutImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_haldClutImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_haldClutImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::haldClutImage *)new Magick::haldClutImage((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_haldClutImage_templ<SWIG_OBJ_WRAP>::_Magick_haldClutImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_haldClutImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_haldClutImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_haldClutImage__wrap_Magick_haldClutImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::haldClutImage *arg1 = (Magick::haldClutImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_haldClutImage__wrap_Magick_haldClutImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::haldClutImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__haldClutImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_haldClutImage_call" "', argument " "1"" of type '" "Magick::haldClutImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::haldClutImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_haldClutImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_haldClutImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_haldClutImage__wrap_Magick_haldClutImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_haldClutImage_callAsync.");
  }
  context = new _Magick_haldClutImage__wrap_Magick_haldClutImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_haldClutImage__wrap_Magick_haldClutImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_haldClutImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_haldClutImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::haldClutImage *arg1 = (Magick::haldClutImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_haldClutImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__haldClutImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_haldClutImage_call" "', argument " "1"" of type '" "Magick::haldClutImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::haldClutImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_haldClutImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_haldClutImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::haldClutImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_haldClutImage_templ<SWIG_OBJ_WRAP>::~_Magick_haldClutImage_templ() {
  auto arg1 = reinterpret_cast<Magick::haldClutImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_implodeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_implodeImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::implodeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_implodeImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_implodeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::implodeImage *)new Magick::implodeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_implodeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_implodeImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::implodeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_implodeImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::implodeImage *)new Magick::implodeImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_implodeImage_templ<SWIG_OBJ_WRAP>::_Magick_implodeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__implodeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_implodeImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_implodeImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_implodeImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_implodeImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_implodeImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_implodeImage_templ<SWIG_OBJ_WRAP>::_Magick_implodeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_implodeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_implodeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_implodeImage__wrap_Magick_implodeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::implodeImage *arg1 = (Magick::implodeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_implodeImage__wrap_Magick_implodeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::implodeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__implodeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_implodeImage_call" "', argument " "1"" of type '" "Magick::implodeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::implodeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_implodeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_implodeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_implodeImage__wrap_Magick_implodeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_implodeImage_callAsync.");
  }
  context = new _Magick_implodeImage__wrap_Magick_implodeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_implodeImage__wrap_Magick_implodeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_implodeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_implodeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::implodeImage *arg1 = (Magick::implodeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_implodeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__implodeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_implodeImage_call" "', argument " "1"" of type '" "Magick::implodeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::implodeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_implodeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_implodeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::implodeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_implodeImage_templ<SWIG_OBJ_WRAP>::~_Magick_implodeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::implodeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_inverseFourierTransformImage_templ<SWIG_OBJ_WRAP>::_Magick_inverseFourierTransformImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__inverseFourierTransformImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::inverseFourierTransformImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_inverseFourierTransformImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_inverseFourierTransformImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_inverseFourierTransformImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::inverseFourierTransformImage *)new Magick::inverseFourierTransformImage((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_inverseFourierTransformImage_templ<SWIG_OBJ_WRAP>::_Magick_inverseFourierTransformImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_inverseFourierTransformImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_inverseFourierTransformImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_inverseFourierTransformImage__wrap_Magick_inverseFourierTransformImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::inverseFourierTransformImage *arg1 = (Magick::inverseFourierTransformImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_inverseFourierTransformImage__wrap_Magick_inverseFourierTransformImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::inverseFourierTransformImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__inverseFourierTransformImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_inverseFourierTransformImage_call" "', argument " "1"" of type '" "Magick::inverseFourierTransformImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::inverseFourierTransformImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_inverseFourierTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_inverseFourierTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_inverseFourierTransformImage__wrap_Magick_inverseFourierTransformImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_inverseFourierTransformImage_callAsync.");
  }
  context = new _Magick_inverseFourierTransformImage__wrap_Magick_inverseFourierTransformImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_inverseFourierTransformImage__wrap_Magick_inverseFourierTransformImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_inverseFourierTransformImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_inverseFourierTransformImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::inverseFourierTransformImage *arg1 = (Magick::inverseFourierTransformImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_inverseFourierTransformImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__inverseFourierTransformImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_inverseFourierTransformImage_call" "', argument " "1"" of type '" "Magick::inverseFourierTransformImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::inverseFourierTransformImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_inverseFourierTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_inverseFourierTransformImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::inverseFourierTransformImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_inverseFourierTransformImage_templ<SWIG_OBJ_WRAP>::~_Magick_inverseFourierTransformImage_templ() {
  auto arg1 = reinterpret_cast<Magick::inverseFourierTransformImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_isValidImage_templ<SWIG_OBJ_WRAP>::_Magick_isValidImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__isValidImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::isValidImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_isValidImage.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_isValidImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::isValidImage *)new Magick::isValidImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_isValidImage_templ<SWIG_OBJ_WRAP>::_Magick_isValidImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_isValidImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_isValidImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_isValidImage__wrap_Magick_isValidImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::isValidImage *arg1 = (Magick::isValidImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_isValidImage__wrap_Magick_isValidImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::isValidImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__isValidImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_isValidImage_call" "', argument " "1"" of type '" "Magick::isValidImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::isValidImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_isValidImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_isValidImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_isValidImage__wrap_Magick_isValidImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_isValidImage_callAsync.");
  }
  context = new _Magick_isValidImage__wrap_Magick_isValidImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_isValidImage__wrap_Magick_isValidImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_isValidImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_isValidImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::isValidImage *arg1 = (Magick::isValidImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_isValidImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__isValidImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_isValidImage_call" "', argument " "1"" of type '" "Magick::isValidImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::isValidImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_isValidImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_isValidImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::isValidImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_isValidImage_templ<SWIG_OBJ_WRAP>::~_Magick_isValidImage_templ() {
  auto arg1 = reinterpret_cast<Magick::isValidImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_labelImage_templ<SWIG_OBJ_WRAP>::_Magick_labelImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__labelImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::labelImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_labelImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_labelImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_labelImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::labelImage *)new Magick::labelImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_labelImage_templ<SWIG_OBJ_WRAP>::_Magick_labelImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_labelImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_labelImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_labelImage__wrap_Magick_labelImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::labelImage *arg1 = (Magick::labelImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_labelImage__wrap_Magick_labelImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::labelImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__labelImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_labelImage_call" "', argument " "1"" of type '" "Magick::labelImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::labelImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_labelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_labelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_labelImage__wrap_Magick_labelImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_labelImage_callAsync.");
  }
  context = new _Magick_labelImage__wrap_Magick_labelImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_labelImage__wrap_Magick_labelImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_labelImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_labelImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::labelImage *arg1 = (Magick::labelImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_labelImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__labelImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_labelImage_call" "', argument " "1"" of type '" "Magick::labelImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::labelImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_labelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_labelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::labelImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_labelImage_templ<SWIG_OBJ_WRAP>::~_Magick_labelImage_templ() {
  auto arg1 = reinterpret_cast<Magick::labelImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_levelImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_levelImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::levelImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_levelImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_levelImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_levelImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_levelImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::levelImage *)new Magick::levelImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_levelImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_levelImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::levelImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_levelImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_levelImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_levelImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::levelImage *)new Magick::levelImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_levelImage_templ<SWIG_OBJ_WRAP>::_Magick_levelImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__levelImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_levelImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_levelImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_levelImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_levelImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_levelImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_levelImage_templ<SWIG_OBJ_WRAP>::_Magick_levelImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_levelImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_levelImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_levelImage__wrap_Magick_levelImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::levelImage *arg1 = (Magick::levelImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_levelImage__wrap_Magick_levelImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::levelImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__levelImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_levelImage_call" "', argument " "1"" of type '" "Magick::levelImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::levelImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_levelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_levelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_levelImage__wrap_Magick_levelImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_levelImage_callAsync.");
  }
  context = new _Magick_levelImage__wrap_Magick_levelImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_levelImage__wrap_Magick_levelImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_levelImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_levelImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::levelImage *arg1 = (Magick::levelImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_levelImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__levelImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_levelImage_call" "', argument " "1"" of type '" "Magick::levelImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::levelImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_levelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_levelImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::levelImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_levelImage_templ<SWIG_OBJ_WRAP>::~_Magick_levelImage_templ() {
  auto arg1 = reinterpret_cast<Magick::levelImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_magnifyImage_templ<SWIG_OBJ_WRAP>::_Magick_magnifyImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__magnifyImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::magnifyImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_magnifyImage.");
  }
  {
    try {
      result = (Magick::magnifyImage *)new Magick::magnifyImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_magnifyImage_templ<SWIG_OBJ_WRAP>::_Magick_magnifyImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_magnifyImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_magnifyImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_magnifyImage__wrap_Magick_magnifyImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::magnifyImage *arg1 = (Magick::magnifyImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_magnifyImage__wrap_Magick_magnifyImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::magnifyImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__magnifyImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_magnifyImage_call" "', argument " "1"" of type '" "Magick::magnifyImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::magnifyImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_magnifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_magnifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_magnifyImage__wrap_Magick_magnifyImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_magnifyImage_callAsync.");
  }
  context = new _Magick_magnifyImage__wrap_Magick_magnifyImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_magnifyImage__wrap_Magick_magnifyImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_magnifyImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_magnifyImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::magnifyImage *arg1 = (Magick::magnifyImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_magnifyImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__magnifyImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_magnifyImage_call" "', argument " "1"" of type '" "Magick::magnifyImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::magnifyImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_magnifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_magnifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::magnifyImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_magnifyImage_templ<SWIG_OBJ_WRAP>::~_Magick_magnifyImage_templ() {
  auto arg1 = reinterpret_cast<Magick::magnifyImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_mapImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_mapImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  Magick::mapImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_mapImage__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_mapImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_mapImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);ecode2 = SWIG_AsVal_bool(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_mapImage" "', argument " "2"" of type '" "bool""'");
  } 
  arg2 = static_cast< bool >(val2);{
    try {
      result = (Magick::mapImage *)new Magick::mapImage((Magick::Image const &)*arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_mapImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_mapImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::mapImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_mapImage__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_mapImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_mapImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::mapImage *)new Magick::mapImage((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_mapImage_templ<SWIG_OBJ_WRAP>::_Magick_mapImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__mapImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_mapImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_mapImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_mapImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_mapImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_mapImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_mapImage_templ<SWIG_OBJ_WRAP>::_Magick_mapImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_mapImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_mapImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_mapImage__wrap_Magick_mapImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::mapImage *arg1 = (Magick::mapImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_mapImage__wrap_Magick_mapImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::mapImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__mapImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_mapImage_call" "', argument " "1"" of type '" "Magick::mapImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::mapImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_mapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_mapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_mapImage__wrap_Magick_mapImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_mapImage_callAsync.");
  }
  context = new _Magick_mapImage__wrap_Magick_mapImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_mapImage__wrap_Magick_mapImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_mapImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_mapImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::mapImage *arg1 = (Magick::mapImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_mapImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__mapImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_mapImage_call" "', argument " "1"" of type '" "Magick::mapImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::mapImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_mapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_mapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::mapImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_mapImage_templ<SWIG_OBJ_WRAP>::~_Magick_mapImage_templ() {
  auto arg1 = reinterpret_cast<Magick::mapImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_medianConvolveImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_medianConvolveImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::medianConvolveImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_medianConvolveImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_medianConvolveImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::medianConvolveImage *)new Magick::medianConvolveImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_medianConvolveImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_medianConvolveImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::medianConvolveImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_medianConvolveImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::medianConvolveImage *)new Magick::medianConvolveImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_medianConvolveImage_templ<SWIG_OBJ_WRAP>::_Magick_medianConvolveImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__medianConvolveImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_medianConvolveImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_medianConvolveImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_medianConvolveImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_medianConvolveImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_medianConvolveImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_medianConvolveImage_templ<SWIG_OBJ_WRAP>::_Magick_medianConvolveImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_medianConvolveImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_medianConvolveImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_medianConvolveImage__wrap_Magick_medianConvolveImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::medianConvolveImage *arg1 = (Magick::medianConvolveImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_medianConvolveImage__wrap_Magick_medianConvolveImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::medianConvolveImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__medianConvolveImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_medianConvolveImage_call" "', argument " "1"" of type '" "Magick::medianConvolveImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::medianConvolveImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_medianConvolveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_medianConvolveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_medianConvolveImage__wrap_Magick_medianConvolveImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_medianConvolveImage_callAsync.");
  }
  context = new _Magick_medianConvolveImage__wrap_Magick_medianConvolveImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_medianConvolveImage__wrap_Magick_medianConvolveImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_medianConvolveImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_medianConvolveImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::medianConvolveImage *arg1 = (Magick::medianConvolveImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_medianConvolveImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__medianConvolveImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_medianConvolveImage_call" "', argument " "1"" of type '" "Magick::medianConvolveImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::medianConvolveImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_medianConvolveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_medianConvolveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::medianConvolveImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_medianConvolveImage_templ<SWIG_OBJ_WRAP>::~_Magick_medianConvolveImage_templ() {
  auto arg1 = reinterpret_cast<Magick::medianConvolveImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_minifyImage_templ<SWIG_OBJ_WRAP>::_Magick_minifyImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__minifyImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::minifyImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_minifyImage.");
  }
  {
    try {
      result = (Magick::minifyImage *)new Magick::minifyImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_minifyImage_templ<SWIG_OBJ_WRAP>::_Magick_minifyImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_minifyImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_minifyImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_minifyImage__wrap_Magick_minifyImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::minifyImage *arg1 = (Magick::minifyImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_minifyImage__wrap_Magick_minifyImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::minifyImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__minifyImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_minifyImage_call" "', argument " "1"" of type '" "Magick::minifyImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::minifyImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_minifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_minifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_minifyImage__wrap_Magick_minifyImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_minifyImage_callAsync.");
  }
  context = new _Magick_minifyImage__wrap_Magick_minifyImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_minifyImage__wrap_Magick_minifyImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_minifyImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_minifyImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::minifyImage *arg1 = (Magick::minifyImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_minifyImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__minifyImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_minifyImage_call" "', argument " "1"" of type '" "Magick::minifyImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::minifyImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_minifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_minifyImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::minifyImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_minifyImage_templ<SWIG_OBJ_WRAP>::~_Magick_minifyImage_templ() {
  auto arg1 = reinterpret_cast<Magick::minifyImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_modulateImage_templ<SWIG_OBJ_WRAP>::_Magick_modulateImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__modulateImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::modulateImage *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_modulateImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_modulateImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_modulateImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_modulateImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::modulateImage *)new Magick::modulateImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_modulateImage_templ<SWIG_OBJ_WRAP>::_Magick_modulateImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_modulateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_modulateImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_modulateImage__wrap_Magick_modulateImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::modulateImage *arg1 = (Magick::modulateImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_modulateImage__wrap_Magick_modulateImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::modulateImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__modulateImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_modulateImage_call" "', argument " "1"" of type '" "Magick::modulateImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::modulateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_modulateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_modulateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_modulateImage__wrap_Magick_modulateImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_modulateImage_callAsync.");
  }
  context = new _Magick_modulateImage__wrap_Magick_modulateImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_modulateImage__wrap_Magick_modulateImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_modulateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_modulateImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::modulateImage *arg1 = (Magick::modulateImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_modulateImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__modulateImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_modulateImage_call" "', argument " "1"" of type '" "Magick::modulateImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::modulateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_modulateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_modulateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::modulateImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_modulateImage_templ<SWIG_OBJ_WRAP>::~_Magick_modulateImage_templ() {
  auto arg1 = reinterpret_cast<Magick::modulateImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_negateImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_negateImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::negateImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_negateImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_negateImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::negateImage *)new Magick::negateImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_negateImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_negateImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::negateImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_negateImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::negateImage *)new Magick::negateImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_negateImage_templ<SWIG_OBJ_WRAP>::_Magick_negateImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__negateImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_negateImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_negateImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_negateImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_negateImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_negateImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_negateImage_templ<SWIG_OBJ_WRAP>::_Magick_negateImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_negateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_negateImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_negateImage__wrap_Magick_negateImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::negateImage *arg1 = (Magick::negateImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_negateImage__wrap_Magick_negateImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::negateImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__negateImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_negateImage_call" "', argument " "1"" of type '" "Magick::negateImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::negateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_negateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_negateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_negateImage__wrap_Magick_negateImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_negateImage_callAsync.");
  }
  context = new _Magick_negateImage__wrap_Magick_negateImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_negateImage__wrap_Magick_negateImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_negateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_negateImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::negateImage *arg1 = (Magick::negateImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_negateImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__negateImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_negateImage_call" "', argument " "1"" of type '" "Magick::negateImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::negateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_negateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_negateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::negateImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_negateImage_templ<SWIG_OBJ_WRAP>::~_Magick_negateImage_templ() {
  auto arg1 = reinterpret_cast<Magick::negateImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_normalizeImage_templ<SWIG_OBJ_WRAP>::_Magick_normalizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__normalizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::normalizeImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_normalizeImage.");
  }
  {
    try {
      result = (Magick::normalizeImage *)new Magick::normalizeImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_normalizeImage_templ<SWIG_OBJ_WRAP>::_Magick_normalizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_normalizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_normalizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_normalizeImage__wrap_Magick_normalizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::normalizeImage *arg1 = (Magick::normalizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_normalizeImage__wrap_Magick_normalizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::normalizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__normalizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_normalizeImage_call" "', argument " "1"" of type '" "Magick::normalizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::normalizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_normalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_normalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_normalizeImage__wrap_Magick_normalizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_normalizeImage_callAsync.");
  }
  context = new _Magick_normalizeImage__wrap_Magick_normalizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_normalizeImage__wrap_Magick_normalizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_normalizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_normalizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::normalizeImage *arg1 = (Magick::normalizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_normalizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__normalizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_normalizeImage_call" "', argument " "1"" of type '" "Magick::normalizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::normalizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_normalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_normalizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::normalizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_normalizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_normalizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::normalizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_oilPaintImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_oilPaintImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::oilPaintImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_oilPaintImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_oilPaintImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::oilPaintImage *)new Magick::oilPaintImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_oilPaintImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_oilPaintImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::oilPaintImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_oilPaintImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::oilPaintImage *)new Magick::oilPaintImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_oilPaintImage_templ<SWIG_OBJ_WRAP>::_Magick_oilPaintImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__oilPaintImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_oilPaintImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_oilPaintImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_oilPaintImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_oilPaintImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_oilPaintImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_oilPaintImage_templ<SWIG_OBJ_WRAP>::_Magick_oilPaintImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_oilPaintImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_oilPaintImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_oilPaintImage__wrap_Magick_oilPaintImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::oilPaintImage *arg1 = (Magick::oilPaintImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_oilPaintImage__wrap_Magick_oilPaintImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::oilPaintImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__oilPaintImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_oilPaintImage_call" "', argument " "1"" of type '" "Magick::oilPaintImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::oilPaintImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_oilPaintImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_oilPaintImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_oilPaintImage__wrap_Magick_oilPaintImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_oilPaintImage_callAsync.");
  }
  context = new _Magick_oilPaintImage__wrap_Magick_oilPaintImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_oilPaintImage__wrap_Magick_oilPaintImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_oilPaintImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_oilPaintImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::oilPaintImage *arg1 = (Magick::oilPaintImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_oilPaintImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__oilPaintImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_oilPaintImage_call" "', argument " "1"" of type '" "Magick::oilPaintImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::oilPaintImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_oilPaintImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_oilPaintImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::oilPaintImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_oilPaintImage_templ<SWIG_OBJ_WRAP>::~_Magick_oilPaintImage_templ() {
  auto arg1 = reinterpret_cast<Magick::oilPaintImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_alphaImage_templ<SWIG_OBJ_WRAP>::_Magick_alphaImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__alphaImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  unsigned int arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::alphaImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_alphaImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_alphaImage" "', argument " "1"" of type '" "unsigned int""'");
  } 
  arg1 = static_cast< unsigned int >(val1);{
    try {
      result = (Magick::alphaImage *)new Magick::alphaImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_alphaImage_templ<SWIG_OBJ_WRAP>::_Magick_alphaImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_alphaImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_alphaImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_alphaImage__wrap_Magick_alphaImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::alphaImage *arg1 = (Magick::alphaImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_alphaImage__wrap_Magick_alphaImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::alphaImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__alphaImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_alphaImage_call" "', argument " "1"" of type '" "Magick::alphaImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::alphaImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_alphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_alphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_alphaImage__wrap_Magick_alphaImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_alphaImage_callAsync.");
  }
  context = new _Magick_alphaImage__wrap_Magick_alphaImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_alphaImage__wrap_Magick_alphaImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_alphaImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_alphaImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::alphaImage *arg1 = (Magick::alphaImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_alphaImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__alphaImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_alphaImage_call" "', argument " "1"" of type '" "Magick::alphaImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::alphaImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_alphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_alphaImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::alphaImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_alphaImage_templ<SWIG_OBJ_WRAP>::~_Magick_alphaImage_templ() {
  auto arg1 = reinterpret_cast<Magick::alphaImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_opaqueImage_templ<SWIG_OBJ_WRAP>::_Magick_opaqueImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__opaqueImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  Magick::Color *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  Magick::opaqueImage *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_opaqueImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_opaqueImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_opaqueImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Color * >(argp1);res2 = SWIG_ConvertPtr(info[1], &argp2, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res2)) {
    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Magick_opaqueImage" "', argument " "2"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp2) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_opaqueImage" "', argument " "2"" of type '" "Magick::Color const &""'"); 
  }
  arg2 = reinterpret_cast< Magick::Color * >(argp2);{
    try {
      result = (Magick::opaqueImage *)new Magick::opaqueImage((Magick::Color const &)*arg1,(Magick::Color const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_opaqueImage_templ<SWIG_OBJ_WRAP>::_Magick_opaqueImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_opaqueImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_opaqueImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_opaqueImage__wrap_Magick_opaqueImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::opaqueImage *arg1 = (Magick::opaqueImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_opaqueImage__wrap_Magick_opaqueImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::opaqueImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__opaqueImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_opaqueImage_call" "', argument " "1"" of type '" "Magick::opaqueImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::opaqueImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_opaqueImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_opaqueImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_opaqueImage__wrap_Magick_opaqueImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_opaqueImage_callAsync.");
  }
  context = new _Magick_opaqueImage__wrap_Magick_opaqueImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_opaqueImage__wrap_Magick_opaqueImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_opaqueImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_opaqueImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::opaqueImage *arg1 = (Magick::opaqueImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_opaqueImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__opaqueImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_opaqueImage_call" "', argument " "1"" of type '" "Magick::opaqueImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::opaqueImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_opaqueImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_opaqueImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::opaqueImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_opaqueImage_templ<SWIG_OBJ_WRAP>::~_Magick_opaqueImage_templ() {
  auto arg1 = reinterpret_cast<Magick::opaqueImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_quantizeImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::quantizeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_quantizeImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_quantizeImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::quantizeImage *)new Magick::quantizeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_quantizeImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::quantizeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_quantizeImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::quantizeImage *)new Magick::quantizeImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__quantizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_quantizeImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_quantizeImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_quantizeImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_quantizeImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_quantizeImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_quantizeImage__wrap_Magick_quantizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::quantizeImage *arg1 = (Magick::quantizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_quantizeImage__wrap_Magick_quantizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::quantizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeImage_call" "', argument " "1"" of type '" "Magick::quantizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::quantizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_quantizeImage__wrap_Magick_quantizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeImage_callAsync.");
  }
  context = new _Magick_quantizeImage__wrap_Magick_quantizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_quantizeImage__wrap_Magick_quantizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::quantizeImage *arg1 = (Magick::quantizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeImage_call" "', argument " "1"" of type '" "Magick::quantizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::quantizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::quantizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_quantizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::quantizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_raiseImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_raiseImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  bool arg2 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  Magick::raiseImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_raiseImage__SWIG_0.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  ecode2 = SWIG_AsVal_bool(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_raiseImage" "', argument " "2"" of type '" "bool""'");
  } 
  arg2 = static_cast< bool >(val2);{
    try {
      result = (Magick::raiseImage *)new Magick::raiseImage((Magick::Geometry const &)*arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_raiseImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_raiseImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::raiseImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_raiseImage__SWIG_1.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_raiseImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::raiseImage *)new Magick::raiseImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_raiseImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_raiseImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::raiseImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_raiseImage__SWIG_2.");
  }
  {
    try {
      result = (Magick::raiseImage *)new Magick::raiseImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_raiseImage_templ<SWIG_OBJ_WRAP>::_Magick_raiseImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__raiseImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_raiseImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_raiseImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_raiseImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_raiseImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_raiseImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_raiseImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_raiseImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_raiseImage_templ<SWIG_OBJ_WRAP>::_Magick_raiseImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_raiseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_raiseImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_raiseImage__wrap_Magick_raiseImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::raiseImage *arg1 = (Magick::raiseImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_raiseImage__wrap_Magick_raiseImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::raiseImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__raiseImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_raiseImage_call" "', argument " "1"" of type '" "Magick::raiseImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::raiseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_raiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_raiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_raiseImage__wrap_Magick_raiseImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_raiseImage_callAsync.");
  }
  context = new _Magick_raiseImage__wrap_Magick_raiseImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_raiseImage__wrap_Magick_raiseImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_raiseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_raiseImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::raiseImage *arg1 = (Magick::raiseImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_raiseImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__raiseImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_raiseImage_call" "', argument " "1"" of type '" "Magick::raiseImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::raiseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_raiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_raiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::raiseImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_raiseImage_templ<SWIG_OBJ_WRAP>::~_Magick_raiseImage_templ() {
  auto arg1 = reinterpret_cast<Magick::raiseImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ReadOptions__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ReadOptions *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ReadOptions__SWIG_0.");
  }
  {
    try {
      result = (Magick::ReadOptions *)new Magick::ReadOptions();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_ReadOptions__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::ReadOptions *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::ReadOptions *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_ReadOptions__SWIG_1.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__ReadOptions,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_ReadOptions" "', argument " "1"" of type '" "Magick::ReadOptions const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_ReadOptions" "', argument " "1"" of type '" "Magick::ReadOptions const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);{
    try {
      result = (Magick::ReadOptions *)new Magick::ReadOptions((Magick::ReadOptions const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_Magick_ReadOptions_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__ReadOptions;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ReadOptions__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ReadOptions__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_ReadOptions__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_ReadOptions__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_ReadOptions");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_Magick_ReadOptions_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::~_Magick_ReadOptions_templ() {
  auto arg1 = reinterpret_cast<Magick::ReadOptions *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_density__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_density" "', argument " "1"" of type '" "Magick::ReadOptions *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ReadOptions_density" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ReadOptions_density" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ReadOptions_density" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ReadOptions_density" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->density((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_density__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_density" "', argument " "1"" of type '" "Magick::ReadOptions const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ReadOptions const *)arg1)->density();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_ReadOptions__wrap_Magick_ReadOptions_density(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_density__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_density__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_density__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_density__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function density.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_depth__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  size_t arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_depth" "', argument " "1"" of type '" "Magick::ReadOptions *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ReadOptions_depth" "', argument " "2"" of type '" "size_t""'");
    } 
    arg2 = static_cast< size_t >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->depth(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_depth__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  size_t result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_depth" "', argument " "1"" of type '" "Magick::ReadOptions const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ReadOptions const *)arg1)->depth();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_ReadOptions__wrap_Magick_ReadOptions_depth(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_depth__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_depth__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_depth__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_depth__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function depth.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_ping__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_ping" "', argument " "1"" of type '" "Magick::ReadOptions *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ReadOptions_ping" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->ping(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_ping__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_ping" "', argument " "1"" of type '" "Magick::ReadOptions const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::ReadOptions const *)arg1)->ping();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_ReadOptions__wrap_Magick_ReadOptions_ping(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_ping__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_ping__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_ping__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_ping__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function ping.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_quiet__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  bool arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  bool val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_quiet" "', argument " "1"" of type '" "Magick::ReadOptions *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);ecode2 = SWIG_AsVal_bool(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Magick_ReadOptions_quiet" "', argument " "2"" of type '" "bool""'");
    } 
    arg2 = static_cast< bool >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->quiet(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_quiet__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_quiet" "', argument " "1"" of type '" "Magick::ReadOptions const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((Magick::ReadOptions const *)arg1)->quiet();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_ReadOptions__wrap_Magick_ReadOptions_quiet(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_quiet__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_quiet__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_quiet__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_quiet__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function quiet.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_size__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  Magick::Geometry *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::Geometry from_string_temp2 ;
  int res10 = SWIG_OLDOBJ ;
  void *argp10 = 0 ;
  int res11 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_size" "', argument " "1"" of type '" "Magick::ReadOptions *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);{
      // This is a generic typemap that applies
      // to all arguments called FROM_STRING
      if (info[0].IsString()) {
        // If the JS argument is a string
        {
          // We apply the default std::string typemap - it parses
          // its argument in a local temporary arg2
          std::string *arg2;
          {
            std::string *ptr = (std::string *)0;
            res10 = SWIG_AsPtr_std_string(info[0], &ptr);
            if (!SWIG_IsOK(res10)) {
              SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "Magick_ReadOptions_size" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            if (!ptr) {
              SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ReadOptions_size" "', argument " "1"" of type '" "std::string const &""'"); 
            }
            arg2 = ptr;
          };
          // Construct the object from this string
          from_string_temp2 = Magick::Geometry(*arg2);
          // The string is not needed anymore
          delete arg2;
        }
        // We then assign the local temporary arg2 to the real arg2
        arg2 = &from_string_temp2;
      } else {
        // If the JS argument is not a string, then
        // default typemap applies
        res11 = SWIG_ConvertPtr(info[0], &argp10, SWIGTYPE_p_Magick__Geometry,  0 );
        if (!SWIG_IsOK(res11)) {
          SWIG_exception_fail(SWIG_ArgError(res11), "in method '" "Magick_ReadOptions_size" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        if (!argp10) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_ReadOptions_size" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
        }
        arg2 = reinterpret_cast< Magick::Geometry * >(argp10);;
      }
      
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->size((Magick::Geometry const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_size__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  Magick::Geometry result;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_size" "', argument " "1"" of type '" "Magick::ReadOptions const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((Magick::ReadOptions const *)arg1)->size();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj((new Magick::Geometry(result)), SWIGTYPE_p_Magick__Geometry, SWIG_POINTER_OWN |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function_dispatcher
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_ReadOptions__wrap_Magick_ReadOptions_size(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_size__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_size__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_Magick_ReadOptions_size__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_Magick_ReadOptions_size__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function size.");
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_ReadOptions_templ<SWIG_OBJ_WRAP>::_wrap_Magick_ReadOptions_imageInfo(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::ReadOptions *arg1 = (Magick::ReadOptions *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  MagickCore::ImageInfo *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_ReadOptions_imageInfo.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__ReadOptions, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_ReadOptions_imageInfo" "', argument " "1"" of type '" "Magick::ReadOptions *""'"); 
    }
    arg1 = reinterpret_cast< Magick::ReadOptions * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (MagickCore::ImageInfo *)(arg1)->imageInfo();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MagickCore___ImageInfo, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_reduceNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_reduceNoiseImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::reduceNoiseImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_reduceNoiseImage__SWIG_0.");
  }
  {
    try {
      result = (Magick::reduceNoiseImage *)new Magick::reduceNoiseImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_reduceNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_reduceNoiseImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::reduceNoiseImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_reduceNoiseImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_reduceNoiseImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::reduceNoiseImage *)new Magick::reduceNoiseImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_reduceNoiseImage_templ<SWIG_OBJ_WRAP>::_Magick_reduceNoiseImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__reduceNoiseImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_reduceNoiseImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_reduceNoiseImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_reduceNoiseImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_reduceNoiseImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_reduceNoiseImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_reduceNoiseImage_templ<SWIG_OBJ_WRAP>::_Magick_reduceNoiseImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_reduceNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_reduceNoiseImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_reduceNoiseImage__wrap_Magick_reduceNoiseImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::reduceNoiseImage *arg1 = (Magick::reduceNoiseImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_reduceNoiseImage__wrap_Magick_reduceNoiseImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::reduceNoiseImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__reduceNoiseImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_reduceNoiseImage_call" "', argument " "1"" of type '" "Magick::reduceNoiseImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::reduceNoiseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_reduceNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_reduceNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_reduceNoiseImage__wrap_Magick_reduceNoiseImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_reduceNoiseImage_callAsync.");
  }
  context = new _Magick_reduceNoiseImage__wrap_Magick_reduceNoiseImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_reduceNoiseImage__wrap_Magick_reduceNoiseImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_reduceNoiseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_reduceNoiseImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::reduceNoiseImage *arg1 = (Magick::reduceNoiseImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_reduceNoiseImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__reduceNoiseImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_reduceNoiseImage_call" "', argument " "1"" of type '" "Magick::reduceNoiseImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::reduceNoiseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_reduceNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_reduceNoiseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::reduceNoiseImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_reduceNoiseImage_templ<SWIG_OBJ_WRAP>::~_Magick_reduceNoiseImage_templ() {
  auto arg1 = reinterpret_cast<Magick::reduceNoiseImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_resizeImage_templ<SWIG_OBJ_WRAP>::_Magick_resizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__resizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::resizeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_resizeImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_resizeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_resizeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_resizeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_resizeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::resizeImage *)new Magick::resizeImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_resizeImage_templ<SWIG_OBJ_WRAP>::_Magick_resizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_resizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_resizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_resizeImage__wrap_Magick_resizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::resizeImage *arg1 = (Magick::resizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_resizeImage__wrap_Magick_resizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::resizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__resizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_resizeImage_call" "', argument " "1"" of type '" "Magick::resizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::resizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_resizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_resizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_resizeImage__wrap_Magick_resizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_resizeImage_callAsync.");
  }
  context = new _Magick_resizeImage__wrap_Magick_resizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_resizeImage__wrap_Magick_resizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_resizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_resizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::resizeImage *arg1 = (Magick::resizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_resizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__resizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_resizeImage_call" "', argument " "1"" of type '" "Magick::resizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::resizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_resizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_resizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::resizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_resizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_resizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::resizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_rollImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_rollImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::Geometry *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::rollImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_rollImage__SWIG_0.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_rollImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_rollImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);{
    try {
      result = (Magick::rollImage *)new Magick::rollImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_rollImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_rollImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::rollImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_rollImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_rollImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_rollImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);{
    try {
      result = (Magick::rollImage *)new Magick::rollImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_rollImage_templ<SWIG_OBJ_WRAP>::_Magick_rollImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__rollImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_rollImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_rollImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_rollImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_rollImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_rollImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_rollImage_templ<SWIG_OBJ_WRAP>::_Magick_rollImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_rollImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_rollImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_rollImage__wrap_Magick_rollImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::rollImage *arg1 = (Magick::rollImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_rollImage__wrap_Magick_rollImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::rollImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__rollImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_rollImage_call" "', argument " "1"" of type '" "Magick::rollImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::rollImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_rollImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_rollImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_rollImage__wrap_Magick_rollImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_rollImage_callAsync.");
  }
  context = new _Magick_rollImage__wrap_Magick_rollImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_rollImage__wrap_Magick_rollImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_rollImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_rollImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::rollImage *arg1 = (Magick::rollImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_rollImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__rollImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_rollImage_call" "', argument " "1"" of type '" "Magick::rollImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::rollImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_rollImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_rollImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::rollImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_rollImage_templ<SWIG_OBJ_WRAP>::~_Magick_rollImage_templ() {
  auto arg1 = reinterpret_cast<Magick::rollImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_rotateImage_templ<SWIG_OBJ_WRAP>::_Magick_rotateImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__rotateImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::rotateImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_rotateImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_rotateImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::rotateImage *)new Magick::rotateImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_rotateImage_templ<SWIG_OBJ_WRAP>::_Magick_rotateImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_rotateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_rotateImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_rotateImage__wrap_Magick_rotateImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::rotateImage *arg1 = (Magick::rotateImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_rotateImage__wrap_Magick_rotateImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::rotateImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__rotateImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_rotateImage_call" "', argument " "1"" of type '" "Magick::rotateImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::rotateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_rotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_rotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_rotateImage__wrap_Magick_rotateImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_rotateImage_callAsync.");
  }
  context = new _Magick_rotateImage__wrap_Magick_rotateImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_rotateImage__wrap_Magick_rotateImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_rotateImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_rotateImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::rotateImage *arg1 = (Magick::rotateImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_rotateImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__rotateImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_rotateImage_call" "', argument " "1"" of type '" "Magick::rotateImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::rotateImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_rotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_rotateImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::rotateImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_rotateImage_templ<SWIG_OBJ_WRAP>::~_Magick_rotateImage_templ() {
  auto arg1 = reinterpret_cast<Magick::rotateImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_sampleImage_templ<SWIG_OBJ_WRAP>::_Magick_sampleImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__sampleImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::sampleImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_sampleImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_sampleImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_sampleImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_sampleImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_sampleImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::sampleImage *)new Magick::sampleImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_sampleImage_templ<SWIG_OBJ_WRAP>::_Magick_sampleImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sampleImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sampleImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_sampleImage__wrap_Magick_sampleImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::sampleImage *arg1 = (Magick::sampleImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_sampleImage__wrap_Magick_sampleImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::sampleImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sampleImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sampleImage_call" "', argument " "1"" of type '" "Magick::sampleImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::sampleImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sampleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sampleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_sampleImage__wrap_Magick_sampleImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sampleImage_callAsync.");
  }
  context = new _Magick_sampleImage__wrap_Magick_sampleImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_sampleImage__wrap_Magick_sampleImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sampleImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sampleImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::sampleImage *arg1 = (Magick::sampleImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sampleImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sampleImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sampleImage_call" "', argument " "1"" of type '" "Magick::sampleImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::sampleImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sampleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sampleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::sampleImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_sampleImage_templ<SWIG_OBJ_WRAP>::~_Magick_sampleImage_templ() {
  auto arg1 = reinterpret_cast<Magick::sampleImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_scaleImage_templ<SWIG_OBJ_WRAP>::_Magick_scaleImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__scaleImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::scaleImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_scaleImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_scaleImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_scaleImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_scaleImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_scaleImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::scaleImage *)new Magick::scaleImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_scaleImage_templ<SWIG_OBJ_WRAP>::_Magick_scaleImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_scaleImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_scaleImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_scaleImage__wrap_Magick_scaleImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::scaleImage *arg1 = (Magick::scaleImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_scaleImage__wrap_Magick_scaleImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::scaleImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__scaleImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_scaleImage_call" "', argument " "1"" of type '" "Magick::scaleImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::scaleImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_scaleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_scaleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_scaleImage__wrap_Magick_scaleImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_scaleImage_callAsync.");
  }
  context = new _Magick_scaleImage__wrap_Magick_scaleImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_scaleImage__wrap_Magick_scaleImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_scaleImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_scaleImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::scaleImage *arg1 = (Magick::scaleImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_scaleImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__scaleImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_scaleImage_call" "', argument " "1"" of type '" "Magick::scaleImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::scaleImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_scaleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_scaleImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::scaleImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_scaleImage_templ<SWIG_OBJ_WRAP>::~_Magick_scaleImage_templ() {
  auto arg1 = reinterpret_cast<Magick::scaleImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_segmentImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_segmentImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::segmentImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_segmentImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_segmentImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_segmentImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::segmentImage *)new Magick::segmentImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_segmentImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_segmentImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::segmentImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_segmentImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_segmentImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::segmentImage *)new Magick::segmentImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_segmentImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_segmentImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::segmentImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_segmentImage__SWIG_2.");
  }
  {
    try {
      result = (Magick::segmentImage *)new Magick::segmentImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_segmentImage_templ<SWIG_OBJ_WRAP>::_Magick_segmentImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__segmentImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_segmentImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_segmentImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_segmentImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_segmentImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_segmentImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_segmentImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_segmentImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_segmentImage_templ<SWIG_OBJ_WRAP>::_Magick_segmentImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_segmentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_segmentImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_segmentImage__wrap_Magick_segmentImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::segmentImage *arg1 = (Magick::segmentImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_segmentImage__wrap_Magick_segmentImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::segmentImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__segmentImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_segmentImage_call" "', argument " "1"" of type '" "Magick::segmentImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::segmentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_segmentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_segmentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_segmentImage__wrap_Magick_segmentImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_segmentImage_callAsync.");
  }
  context = new _Magick_segmentImage__wrap_Magick_segmentImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_segmentImage__wrap_Magick_segmentImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_segmentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_segmentImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::segmentImage *arg1 = (Magick::segmentImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_segmentImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__segmentImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_segmentImage_call" "', argument " "1"" of type '" "Magick::segmentImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::segmentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_segmentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_segmentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::segmentImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_segmentImage_templ<SWIG_OBJ_WRAP>::~_Magick_segmentImage_templ() {
  auto arg1 = reinterpret_cast<Magick::segmentImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadeImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  bool arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  Magick::shadeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadeImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shadeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_shadeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_bool(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_shadeImage" "', argument " "3"" of type '" "bool""'");
  } 
  arg3 = static_cast< bool >(val3);{
    try {
      result = (Magick::shadeImage *)new Magick::shadeImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadeImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::shadeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadeImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shadeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_shadeImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::shadeImage *)new Magick::shadeImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadeImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::shadeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadeImage__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shadeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::shadeImage *)new Magick::shadeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadeImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::shadeImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadeImage__SWIG_3.");
  }
  {
    try {
      result = (Magick::shadeImage *)new Magick::shadeImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_Magick_shadeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__shadeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadeImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadeImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadeImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadeImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadeImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadeImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadeImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadeImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_shadeImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_Magick_shadeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shadeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_shadeImage__wrap_Magick_shadeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::shadeImage *arg1 = (Magick::shadeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_shadeImage__wrap_Magick_shadeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::shadeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shadeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shadeImage_call" "', argument " "1"" of type '" "Magick::shadeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::shadeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shadeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shadeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_shadeImage__wrap_Magick_shadeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shadeImage_callAsync.");
  }
  context = new _Magick_shadeImage__wrap_Magick_shadeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_shadeImage__wrap_Magick_shadeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shadeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::shadeImage *arg1 = (Magick::shadeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shadeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shadeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shadeImage_call" "', argument " "1"" of type '" "Magick::shadeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::shadeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shadeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shadeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::shadeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_shadeImage_templ<SWIG_OBJ_WRAP>::~_Magick_shadeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::shadeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadowImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  ssize_t arg3 ;
  ssize_t arg4 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  Magick::shadowImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 4 || static_cast<int>(info.Length()) > 4) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadowImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shadowImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_shadowImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_shadowImage" "', argument " "3"" of type '" "ssize_t""'");
  } 
  arg3 = static_cast< ssize_t >(val3);ecode4 = SWIG_AsVal_int(info[3], &val4);
  if (!SWIG_IsOK(ecode4)) {
    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_Magick_shadowImage" "', argument " "4"" of type '" "ssize_t""'");
  } 
  arg4 = static_cast< ssize_t >(val4);{
    try {
      result = (Magick::shadowImage *)new Magick::shadowImage(arg1,arg2,arg3,arg4);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadowImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  ssize_t arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  Magick::shadowImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadowImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shadowImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_shadowImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_int(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_shadowImage" "', argument " "3"" of type '" "ssize_t""'");
  } 
  arg3 = static_cast< ssize_t >(val3);{
    try {
      result = (Magick::shadowImage *)new Magick::shadowImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadowImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::shadowImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadowImage__SWIG_2.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shadowImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_shadowImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::shadowImage *)new Magick::shadowImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadowImage__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::shadowImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadowImage__SWIG_3.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shadowImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::shadowImage *)new Magick::shadowImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_shadowImage__SWIG_4(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::shadowImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shadowImage__SWIG_4.");
  }
  {
    try {
      result = (Magick::shadowImage *)new Magick::shadowImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_Magick_shadowImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__shadowImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 4 && static_cast<int>(info.Length()) <= 4) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadowImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadowImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadowImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadowImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadowImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadowImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadowImage__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadowImage__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_shadowImage__SWIG_4(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_shadowImage__SWIG_4(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_shadowImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_Magick_shadowImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shadowImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_shadowImage__wrap_Magick_shadowImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::shadowImage *arg1 = (Magick::shadowImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_shadowImage__wrap_Magick_shadowImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::shadowImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shadowImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shadowImage_call" "', argument " "1"" of type '" "Magick::shadowImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::shadowImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shadowImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shadowImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_shadowImage__wrap_Magick_shadowImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shadowImage_callAsync.");
  }
  context = new _Magick_shadowImage__wrap_Magick_shadowImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_shadowImage__wrap_Magick_shadowImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shadowImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shadowImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::shadowImage *arg1 = (Magick::shadowImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shadowImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shadowImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shadowImage_call" "', argument " "1"" of type '" "Magick::shadowImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::shadowImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shadowImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shadowImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::shadowImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_shadowImage_templ<SWIG_OBJ_WRAP>::~_Magick_shadowImage_templ() {
  auto arg1 = reinterpret_cast<Magick::shadowImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_sharpenImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::sharpenImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_sharpenImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_sharpenImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_sharpenImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::sharpenImage *)new Magick::sharpenImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_sharpenImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::sharpenImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_sharpenImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_sharpenImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::sharpenImage *)new Magick::sharpenImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_sharpenImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::sharpenImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_sharpenImage__SWIG_2.");
  }
  {
    try {
      result = (Magick::sharpenImage *)new Magick::sharpenImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::_Magick_sharpenImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__sharpenImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_sharpenImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_sharpenImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_sharpenImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_sharpenImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_sharpenImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_sharpenImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_sharpenImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::_Magick_sharpenImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sharpenImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_sharpenImage__wrap_Magick_sharpenImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::sharpenImage *arg1 = (Magick::sharpenImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_sharpenImage__wrap_Magick_sharpenImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::sharpenImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sharpenImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sharpenImage_call" "', argument " "1"" of type '" "Magick::sharpenImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::sharpenImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sharpenImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sharpenImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_sharpenImage__wrap_Magick_sharpenImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sharpenImage_callAsync.");
  }
  context = new _Magick_sharpenImage__wrap_Magick_sharpenImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_sharpenImage__wrap_Magick_sharpenImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sharpenImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::sharpenImage *arg1 = (Magick::sharpenImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sharpenImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sharpenImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sharpenImage_call" "', argument " "1"" of type '" "Magick::sharpenImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::sharpenImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sharpenImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sharpenImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::sharpenImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_sharpenImage_templ<SWIG_OBJ_WRAP>::~_Magick_sharpenImage_templ() {
  auto arg1 = reinterpret_cast<Magick::sharpenImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_shaveImage_templ<SWIG_OBJ_WRAP>::_Magick_shaveImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__shaveImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::shaveImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shaveImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_shaveImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_shaveImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_shaveImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_shaveImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::shaveImage *)new Magick::shaveImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_shaveImage_templ<SWIG_OBJ_WRAP>::_Magick_shaveImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shaveImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shaveImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_shaveImage__wrap_Magick_shaveImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::shaveImage *arg1 = (Magick::shaveImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_shaveImage__wrap_Magick_shaveImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::shaveImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shaveImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shaveImage_call" "', argument " "1"" of type '" "Magick::shaveImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::shaveImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shaveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shaveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_shaveImage__wrap_Magick_shaveImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shaveImage_callAsync.");
  }
  context = new _Magick_shaveImage__wrap_Magick_shaveImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_shaveImage__wrap_Magick_shaveImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shaveImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shaveImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::shaveImage *arg1 = (Magick::shaveImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shaveImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shaveImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shaveImage_call" "', argument " "1"" of type '" "Magick::shaveImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::shaveImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shaveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shaveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::shaveImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_shaveImage_templ<SWIG_OBJ_WRAP>::~_Magick_shaveImage_templ() {
  auto arg1 = reinterpret_cast<Magick::shaveImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_shearImage_templ<SWIG_OBJ_WRAP>::_Magick_shearImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__shearImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::shearImage *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_shearImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_shearImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_shearImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::shearImage *)new Magick::shearImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_shearImage_templ<SWIG_OBJ_WRAP>::_Magick_shearImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shearImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shearImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_shearImage__wrap_Magick_shearImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::shearImage *arg1 = (Magick::shearImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_shearImage__wrap_Magick_shearImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::shearImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shearImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shearImage_call" "', argument " "1"" of type '" "Magick::shearImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::shearImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shearImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shearImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_shearImage__wrap_Magick_shearImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shearImage_callAsync.");
  }
  context = new _Magick_shearImage__wrap_Magick_shearImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_shearImage__wrap_Magick_shearImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_shearImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_shearImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::shearImage *arg1 = (Magick::shearImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_shearImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__shearImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_shearImage_call" "', argument " "1"" of type '" "Magick::shearImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::shearImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_shearImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_shearImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::shearImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_shearImage_templ<SWIG_OBJ_WRAP>::~_Magick_shearImage_templ() {
  auto arg1 = reinterpret_cast<Magick::shearImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_solarizeImage_templ<SWIG_OBJ_WRAP>::_Magick_solarizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__solarizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::solarizeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_solarizeImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_solarizeImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::solarizeImage *)new Magick::solarizeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_solarizeImage_templ<SWIG_OBJ_WRAP>::_Magick_solarizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_solarizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_solarizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_solarizeImage__wrap_Magick_solarizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::solarizeImage *arg1 = (Magick::solarizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_solarizeImage__wrap_Magick_solarizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::solarizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__solarizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_solarizeImage_call" "', argument " "1"" of type '" "Magick::solarizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::solarizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_solarizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_solarizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_solarizeImage__wrap_Magick_solarizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_solarizeImage_callAsync.");
  }
  context = new _Magick_solarizeImage__wrap_Magick_solarizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_solarizeImage__wrap_Magick_solarizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_solarizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_solarizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::solarizeImage *arg1 = (Magick::solarizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_solarizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__solarizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_solarizeImage_call" "', argument " "1"" of type '" "Magick::solarizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::solarizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_solarizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_solarizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::solarizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_solarizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_solarizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::solarizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_spliceImage_templ<SWIG_OBJ_WRAP>::_Magick_spliceImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__spliceImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::spliceImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_spliceImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_spliceImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_spliceImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_spliceImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_spliceImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::spliceImage *)new Magick::spliceImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_spliceImage_templ<SWIG_OBJ_WRAP>::_Magick_spliceImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_spliceImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_spliceImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_spliceImage__wrap_Magick_spliceImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::spliceImage *arg1 = (Magick::spliceImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_spliceImage__wrap_Magick_spliceImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::spliceImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__spliceImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_spliceImage_call" "', argument " "1"" of type '" "Magick::spliceImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::spliceImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_spliceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_spliceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_spliceImage__wrap_Magick_spliceImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_spliceImage_callAsync.");
  }
  context = new _Magick_spliceImage__wrap_Magick_spliceImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_spliceImage__wrap_Magick_spliceImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_spliceImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_spliceImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::spliceImage *arg1 = (Magick::spliceImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_spliceImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__spliceImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_spliceImage_call" "', argument " "1"" of type '" "Magick::spliceImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::spliceImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_spliceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_spliceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::spliceImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_spliceImage_templ<SWIG_OBJ_WRAP>::~_Magick_spliceImage_templ() {
  auto arg1 = reinterpret_cast<Magick::spliceImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_spreadImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_spreadImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::spreadImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_spreadImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_spreadImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::spreadImage *)new Magick::spreadImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_spreadImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_spreadImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::spreadImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_spreadImage__SWIG_1.");
  }
  {
    try {
      result = (Magick::spreadImage *)new Magick::spreadImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_spreadImage_templ<SWIG_OBJ_WRAP>::_Magick_spreadImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__spreadImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_spreadImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_spreadImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_spreadImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_spreadImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_spreadImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_spreadImage_templ<SWIG_OBJ_WRAP>::_Magick_spreadImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_spreadImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_spreadImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_spreadImage__wrap_Magick_spreadImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::spreadImage *arg1 = (Magick::spreadImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_spreadImage__wrap_Magick_spreadImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::spreadImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__spreadImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_spreadImage_call" "', argument " "1"" of type '" "Magick::spreadImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::spreadImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_spreadImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_spreadImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_spreadImage__wrap_Magick_spreadImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_spreadImage_callAsync.");
  }
  context = new _Magick_spreadImage__wrap_Magick_spreadImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_spreadImage__wrap_Magick_spreadImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_spreadImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_spreadImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::spreadImage *arg1 = (Magick::spreadImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_spreadImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__spreadImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_spreadImage_call" "', argument " "1"" of type '" "Magick::spreadImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::spreadImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_spreadImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_spreadImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::spreadImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_spreadImage_templ<SWIG_OBJ_WRAP>::~_Magick_spreadImage_templ() {
  auto arg1 = reinterpret_cast<Magick::spreadImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_steganoImage_templ<SWIG_OBJ_WRAP>::_Magick_steganoImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__steganoImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::steganoImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_steganoImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_steganoImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_steganoImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::steganoImage *)new Magick::steganoImage((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_steganoImage_templ<SWIG_OBJ_WRAP>::_Magick_steganoImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_steganoImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_steganoImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_steganoImage__wrap_Magick_steganoImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::steganoImage *arg1 = (Magick::steganoImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_steganoImage__wrap_Magick_steganoImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::steganoImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__steganoImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_steganoImage_call" "', argument " "1"" of type '" "Magick::steganoImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::steganoImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_steganoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_steganoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_steganoImage__wrap_Magick_steganoImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_steganoImage_callAsync.");
  }
  context = new _Magick_steganoImage__wrap_Magick_steganoImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_steganoImage__wrap_Magick_steganoImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_steganoImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_steganoImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::steganoImage *arg1 = (Magick::steganoImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_steganoImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__steganoImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_steganoImage_call" "', argument " "1"" of type '" "Magick::steganoImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::steganoImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_steganoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_steganoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::steganoImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_steganoImage_templ<SWIG_OBJ_WRAP>::~_Magick_steganoImage_templ() {
  auto arg1 = reinterpret_cast<Magick::steganoImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_stereoImage_templ<SWIG_OBJ_WRAP>::_Magick_stereoImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__stereoImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::stereoImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_stereoImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_stereoImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_stereoImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::stereoImage *)new Magick::stereoImage((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_stereoImage_templ<SWIG_OBJ_WRAP>::_Magick_stereoImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_stereoImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_stereoImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_stereoImage__wrap_Magick_stereoImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::stereoImage *arg1 = (Magick::stereoImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_stereoImage__wrap_Magick_stereoImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::stereoImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__stereoImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_stereoImage_call" "', argument " "1"" of type '" "Magick::stereoImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::stereoImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_stereoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_stereoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_stereoImage__wrap_Magick_stereoImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_stereoImage_callAsync.");
  }
  context = new _Magick_stereoImage__wrap_Magick_stereoImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_stereoImage__wrap_Magick_stereoImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_stereoImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_stereoImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::stereoImage *arg1 = (Magick::stereoImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_stereoImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__stereoImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_stereoImage_call" "', argument " "1"" of type '" "Magick::stereoImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::stereoImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_stereoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_stereoImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::stereoImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_stereoImage_templ<SWIG_OBJ_WRAP>::~_Magick_stereoImage_templ() {
  auto arg1 = reinterpret_cast<Magick::stereoImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_strokeColorImage_templ<SWIG_OBJ_WRAP>::_Magick_strokeColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__strokeColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::strokeColorImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_strokeColorImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_strokeColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_strokeColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_strokeColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_strokeColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::strokeColorImage *)new Magick::strokeColorImage((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_strokeColorImage_templ<SWIG_OBJ_WRAP>::_Magick_strokeColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_strokeColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_strokeColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::strokeColorImage *arg1 = (Magick::strokeColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_strokeColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__strokeColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_strokeColorImage_call" "', argument " "1"" of type '" "Magick::strokeColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::strokeColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_strokeColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_strokeColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::strokeColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_strokeColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_strokeColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::strokeColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_swirlImage_templ<SWIG_OBJ_WRAP>::_Magick_swirlImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__swirlImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::swirlImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_swirlImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_swirlImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::swirlImage *)new Magick::swirlImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_swirlImage_templ<SWIG_OBJ_WRAP>::_Magick_swirlImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_swirlImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_swirlImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_swirlImage__wrap_Magick_swirlImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::swirlImage *arg1 = (Magick::swirlImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_swirlImage__wrap_Magick_swirlImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::swirlImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__swirlImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_swirlImage_call" "', argument " "1"" of type '" "Magick::swirlImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::swirlImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_swirlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_swirlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_swirlImage__wrap_Magick_swirlImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_swirlImage_callAsync.");
  }
  context = new _Magick_swirlImage__wrap_Magick_swirlImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_swirlImage__wrap_Magick_swirlImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_swirlImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_swirlImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::swirlImage *arg1 = (Magick::swirlImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_swirlImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__swirlImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_swirlImage_call" "', argument " "1"" of type '" "Magick::swirlImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::swirlImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_swirlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_swirlImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::swirlImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_swirlImage_templ<SWIG_OBJ_WRAP>::~_Magick_swirlImage_templ() {
  auto arg1 = reinterpret_cast<Magick::swirlImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_textureImage_templ<SWIG_OBJ_WRAP>::_Magick_textureImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__textureImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::textureImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_textureImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Image,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_textureImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_textureImage" "', argument " "1"" of type '" "Magick::Image const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Image * >(argp1);{
    try {
      result = (Magick::textureImage *)new Magick::textureImage((Magick::Image const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_textureImage_templ<SWIG_OBJ_WRAP>::_Magick_textureImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_textureImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_textureImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_textureImage__wrap_Magick_textureImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::textureImage *arg1 = (Magick::textureImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_textureImage__wrap_Magick_textureImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::textureImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__textureImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_textureImage_call" "', argument " "1"" of type '" "Magick::textureImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::textureImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_textureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_textureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_textureImage__wrap_Magick_textureImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_textureImage_callAsync.");
  }
  context = new _Magick_textureImage__wrap_Magick_textureImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_textureImage__wrap_Magick_textureImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_textureImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_textureImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::textureImage *arg1 = (Magick::textureImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_textureImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__textureImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_textureImage_call" "', argument " "1"" of type '" "Magick::textureImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::textureImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_textureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_textureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::textureImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_textureImage_templ<SWIG_OBJ_WRAP>::~_Magick_textureImage_templ() {
  auto arg1 = reinterpret_cast<Magick::textureImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_thresholdImage_templ<SWIG_OBJ_WRAP>::_Magick_thresholdImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__thresholdImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::thresholdImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_thresholdImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_thresholdImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::thresholdImage *)new Magick::thresholdImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_thresholdImage_templ<SWIG_OBJ_WRAP>::_Magick_thresholdImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_thresholdImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_thresholdImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_thresholdImage__wrap_Magick_thresholdImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::thresholdImage *arg1 = (Magick::thresholdImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_thresholdImage__wrap_Magick_thresholdImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::thresholdImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__thresholdImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_thresholdImage_call" "', argument " "1"" of type '" "Magick::thresholdImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::thresholdImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_thresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_thresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_thresholdImage__wrap_Magick_thresholdImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_thresholdImage_callAsync.");
  }
  context = new _Magick_thresholdImage__wrap_Magick_thresholdImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_thresholdImage__wrap_Magick_thresholdImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_thresholdImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_thresholdImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::thresholdImage *arg1 = (Magick::thresholdImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_thresholdImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__thresholdImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_thresholdImage_call" "', argument " "1"" of type '" "Magick::thresholdImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::thresholdImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_thresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_thresholdImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::thresholdImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_thresholdImage_templ<SWIG_OBJ_WRAP>::~_Magick_thresholdImage_templ() {
  auto arg1 = reinterpret_cast<Magick::thresholdImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_transparentImage_templ<SWIG_OBJ_WRAP>::_Magick_transparentImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__transparentImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::transparentImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_transparentImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_transparentImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_transparentImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_transparentImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_transparentImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::transparentImage *)new Magick::transparentImage((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_transparentImage_templ<SWIG_OBJ_WRAP>::_Magick_transparentImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_transparentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_transparentImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_transparentImage__wrap_Magick_transparentImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::transparentImage *arg1 = (Magick::transparentImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_transparentImage__wrap_Magick_transparentImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::transparentImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__transparentImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_transparentImage_call" "', argument " "1"" of type '" "Magick::transparentImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::transparentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_transparentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_transparentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_transparentImage__wrap_Magick_transparentImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_transparentImage_callAsync.");
  }
  context = new _Magick_transparentImage__wrap_Magick_transparentImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_transparentImage__wrap_Magick_transparentImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_transparentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_transparentImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::transparentImage *arg1 = (Magick::transparentImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_transparentImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__transparentImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_transparentImage_call" "', argument " "1"" of type '" "Magick::transparentImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::transparentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_transparentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_transparentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::transparentImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_transparentImage_templ<SWIG_OBJ_WRAP>::~_Magick_transparentImage_templ() {
  auto arg1 = reinterpret_cast<Magick::transparentImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_trimImage_templ<SWIG_OBJ_WRAP>::_Magick_trimImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__trimImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::trimImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_trimImage.");
  }
  {
    try {
      result = (Magick::trimImage *)new Magick::trimImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_trimImage_templ<SWIG_OBJ_WRAP>::_Magick_trimImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_trimImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_trimImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_trimImage__wrap_Magick_trimImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::trimImage *arg1 = (Magick::trimImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_trimImage__wrap_Magick_trimImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::trimImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__trimImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_trimImage_call" "', argument " "1"" of type '" "Magick::trimImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::trimImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_trimImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_trimImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_trimImage__wrap_Magick_trimImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_trimImage_callAsync.");
  }
  context = new _Magick_trimImage__wrap_Magick_trimImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_trimImage__wrap_Magick_trimImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_trimImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_trimImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::trimImage *arg1 = (Magick::trimImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_trimImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__trimImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_trimImage_call" "', argument " "1"" of type '" "Magick::trimImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::trimImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_trimImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_trimImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::trimImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_trimImage_templ<SWIG_OBJ_WRAP>::~_Magick_trimImage_templ() {
  auto arg1 = reinterpret_cast<Magick::trimImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_waveImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_waveImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double arg2 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  Magick::waveImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_waveImage__SWIG_0.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_waveImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_waveImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);{
    try {
      result = (Magick::waveImage *)new Magick::waveImage(arg1,arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_waveImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_waveImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::waveImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_waveImage__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_waveImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::waveImage *)new Magick::waveImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_waveImage_templ<SWIG_OBJ_WRAP>::_wrap_new_Magick_waveImage__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  Magick::waveImage *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_waveImage__SWIG_2.");
  }
  {
    try {
      result = (Magick::waveImage *)new Magick::waveImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_Magick_waveImage_templ<SWIG_OBJ_WRAP>::_Magick_waveImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_Magick__waveImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_waveImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_waveImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_waveImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_waveImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_Magick_waveImage__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_Magick_waveImage__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _Magick_waveImage");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_waveImage_templ<SWIG_OBJ_WRAP>::_Magick_waveImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_waveImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_waveImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_waveImage__wrap_Magick_waveImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::waveImage *arg1 = (Magick::waveImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_waveImage__wrap_Magick_waveImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::waveImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__waveImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_waveImage_call" "', argument " "1"" of type '" "Magick::waveImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::waveImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_waveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_waveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_waveImage__wrap_Magick_waveImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_waveImage_callAsync.");
  }
  context = new _Magick_waveImage__wrap_Magick_waveImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_waveImage__wrap_Magick_waveImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_waveImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_waveImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::waveImage *arg1 = (Magick::waveImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_waveImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__waveImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_waveImage_call" "', argument " "1"" of type '" "Magick::waveImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::waveImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_waveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_waveImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::waveImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_waveImage_templ<SWIG_OBJ_WRAP>::~_Magick_waveImage_templ() {
  auto arg1 = reinterpret_cast<Magick::waveImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_zoomImage_templ<SWIG_OBJ_WRAP>::_Magick_zoomImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__zoomImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::zoomImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_zoomImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_zoomImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_zoomImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_zoomImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_zoomImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::zoomImage *)new Magick::zoomImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_zoomImage_templ<SWIG_OBJ_WRAP>::_Magick_zoomImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_zoomImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_zoomImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_zoomImage__wrap_Magick_zoomImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::zoomImage *arg1 = (Magick::zoomImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_zoomImage__wrap_Magick_zoomImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::zoomImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__zoomImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_zoomImage_call" "', argument " "1"" of type '" "Magick::zoomImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::zoomImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_zoomImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_zoomImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_zoomImage__wrap_Magick_zoomImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_zoomImage_callAsync.");
  }
  context = new _Magick_zoomImage__wrap_Magick_zoomImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_zoomImage__wrap_Magick_zoomImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_zoomImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_zoomImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::zoomImage *arg1 = (Magick::zoomImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_zoomImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__zoomImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_zoomImage_call" "', argument " "1"" of type '" "Magick::zoomImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::zoomImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_zoomImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_zoomImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::zoomImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_zoomImage_templ<SWIG_OBJ_WRAP>::~_Magick_zoomImage_templ() {
  auto arg1 = reinterpret_cast<Magick::zoomImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_adjoinImage_templ<SWIG_OBJ_WRAP>::_Magick_adjoinImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__adjoinImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::adjoinImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_adjoinImage.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_adjoinImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::adjoinImage *)new Magick::adjoinImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_adjoinImage_templ<SWIG_OBJ_WRAP>::_Magick_adjoinImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adjoinImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_adjoinImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_adjoinImage__wrap_Magick_adjoinImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::adjoinImage *arg1 = (Magick::adjoinImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_adjoinImage__wrap_Magick_adjoinImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::adjoinImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__adjoinImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_adjoinImage_call" "', argument " "1"" of type '" "Magick::adjoinImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::adjoinImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_adjoinImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_adjoinImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_adjoinImage__wrap_Magick_adjoinImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_adjoinImage_callAsync.");
  }
  context = new _Magick_adjoinImage__wrap_Magick_adjoinImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_adjoinImage__wrap_Magick_adjoinImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_adjoinImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_adjoinImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::adjoinImage *arg1 = (Magick::adjoinImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_adjoinImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__adjoinImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_adjoinImage_call" "', argument " "1"" of type '" "Magick::adjoinImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::adjoinImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_adjoinImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_adjoinImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::adjoinImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_adjoinImage_templ<SWIG_OBJ_WRAP>::~_Magick_adjoinImage_templ() {
  auto arg1 = reinterpret_cast<Magick::adjoinImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_animationDelayImage_templ<SWIG_OBJ_WRAP>::_Magick_animationDelayImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__animationDelayImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::animationDelayImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_animationDelayImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_animationDelayImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::animationDelayImage *)new Magick::animationDelayImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_animationDelayImage_templ<SWIG_OBJ_WRAP>::_Magick_animationDelayImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_animationDelayImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_animationDelayImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_animationDelayImage__wrap_Magick_animationDelayImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::animationDelayImage *arg1 = (Magick::animationDelayImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_animationDelayImage__wrap_Magick_animationDelayImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::animationDelayImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__animationDelayImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_animationDelayImage_call" "', argument " "1"" of type '" "Magick::animationDelayImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::animationDelayImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_animationDelayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_animationDelayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_animationDelayImage__wrap_Magick_animationDelayImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_animationDelayImage_callAsync.");
  }
  context = new _Magick_animationDelayImage__wrap_Magick_animationDelayImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_animationDelayImage__wrap_Magick_animationDelayImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_animationDelayImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_animationDelayImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::animationDelayImage *arg1 = (Magick::animationDelayImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_animationDelayImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__animationDelayImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_animationDelayImage_call" "', argument " "1"" of type '" "Magick::animationDelayImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::animationDelayImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_animationDelayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_animationDelayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::animationDelayImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_animationDelayImage_templ<SWIG_OBJ_WRAP>::~_Magick_animationDelayImage_templ() {
  auto arg1 = reinterpret_cast<Magick::animationDelayImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_animationIterationsImage_templ<SWIG_OBJ_WRAP>::_Magick_animationIterationsImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__animationIterationsImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::animationIterationsImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_animationIterationsImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_animationIterationsImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::animationIterationsImage *)new Magick::animationIterationsImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_animationIterationsImage_templ<SWIG_OBJ_WRAP>::_Magick_animationIterationsImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_animationIterationsImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_animationIterationsImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_animationIterationsImage__wrap_Magick_animationIterationsImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::animationIterationsImage *arg1 = (Magick::animationIterationsImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_animationIterationsImage__wrap_Magick_animationIterationsImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::animationIterationsImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__animationIterationsImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_animationIterationsImage_call" "', argument " "1"" of type '" "Magick::animationIterationsImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::animationIterationsImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_animationIterationsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_animationIterationsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_animationIterationsImage__wrap_Magick_animationIterationsImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_animationIterationsImage_callAsync.");
  }
  context = new _Magick_animationIterationsImage__wrap_Magick_animationIterationsImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_animationIterationsImage__wrap_Magick_animationIterationsImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_animationIterationsImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_animationIterationsImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::animationIterationsImage *arg1 = (Magick::animationIterationsImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_animationIterationsImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__animationIterationsImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_animationIterationsImage_call" "', argument " "1"" of type '" "Magick::animationIterationsImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::animationIterationsImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_animationIterationsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_animationIterationsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::animationIterationsImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_animationIterationsImage_templ<SWIG_OBJ_WRAP>::~_Magick_animationIterationsImage_templ() {
  auto arg1 = reinterpret_cast<Magick::animationIterationsImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_backgroundColorImage_templ<SWIG_OBJ_WRAP>::_Magick_backgroundColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__backgroundColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::backgroundColorImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_backgroundColorImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_backgroundColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_backgroundColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_backgroundColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_backgroundColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::backgroundColorImage *)new Magick::backgroundColorImage((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_backgroundColorImage_templ<SWIG_OBJ_WRAP>::_Magick_backgroundColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_backgroundColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_backgroundColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::backgroundColorImage *arg1 = (Magick::backgroundColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_backgroundColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__backgroundColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_backgroundColorImage_call" "', argument " "1"" of type '" "Magick::backgroundColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::backgroundColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_backgroundColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_backgroundColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::backgroundColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_backgroundColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_backgroundColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::backgroundColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_backgroundTextureImage_templ<SWIG_OBJ_WRAP>::_Magick_backgroundTextureImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__backgroundTextureImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::backgroundTextureImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_backgroundTextureImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_backgroundTextureImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_backgroundTextureImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::backgroundTextureImage *)new Magick::backgroundTextureImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_backgroundTextureImage_templ<SWIG_OBJ_WRAP>::_Magick_backgroundTextureImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_backgroundTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_backgroundTextureImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_backgroundTextureImage__wrap_Magick_backgroundTextureImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::backgroundTextureImage *arg1 = (Magick::backgroundTextureImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_backgroundTextureImage__wrap_Magick_backgroundTextureImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::backgroundTextureImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__backgroundTextureImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_backgroundTextureImage_call" "', argument " "1"" of type '" "Magick::backgroundTextureImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::backgroundTextureImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_backgroundTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_backgroundTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_backgroundTextureImage__wrap_Magick_backgroundTextureImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_backgroundTextureImage_callAsync.");
  }
  context = new _Magick_backgroundTextureImage__wrap_Magick_backgroundTextureImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_backgroundTextureImage__wrap_Magick_backgroundTextureImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_backgroundTextureImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_backgroundTextureImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::backgroundTextureImage *arg1 = (Magick::backgroundTextureImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_backgroundTextureImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__backgroundTextureImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_backgroundTextureImage_call" "', argument " "1"" of type '" "Magick::backgroundTextureImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::backgroundTextureImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_backgroundTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_backgroundTextureImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::backgroundTextureImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_backgroundTextureImage_templ<SWIG_OBJ_WRAP>::~_Magick_backgroundTextureImage_templ() {
  auto arg1 = reinterpret_cast<Magick::backgroundTextureImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_borderColorImage_templ<SWIG_OBJ_WRAP>::_Magick_borderColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__borderColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  Magick::Color from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::borderColorImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_borderColorImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_borderColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_borderColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Color(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_borderColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_borderColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::borderColorImage *)new Magick::borderColorImage((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_borderColorImage_templ<SWIG_OBJ_WRAP>::_Magick_borderColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_borderColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_borderColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::borderColorImage *arg1 = (Magick::borderColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_borderColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__borderColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_borderColorImage_call" "', argument " "1"" of type '" "Magick::borderColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::borderColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_borderColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_borderColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::borderColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_borderColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_borderColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::borderColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_boxColorImage_templ<SWIG_OBJ_WRAP>::_Magick_boxColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__boxColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::boxColorImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_boxColorImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_boxColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_boxColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Color * >(argp1);{
    try {
      result = (Magick::boxColorImage *)new Magick::boxColorImage((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_boxColorImage_templ<SWIG_OBJ_WRAP>::_Magick_boxColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_boxColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_boxColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::boxColorImage *arg1 = (Magick::boxColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_boxColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__boxColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_boxColorImage_call" "', argument " "1"" of type '" "Magick::boxColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::boxColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_boxColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_boxColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::boxColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_boxColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_boxColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::boxColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_chromaBluePrimaryImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaBluePrimaryImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__chromaBluePrimaryImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::chromaBluePrimaryImage *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_chromaBluePrimaryImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_chromaBluePrimaryImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_chromaBluePrimaryImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_chromaBluePrimaryImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::chromaBluePrimaryImage *)new Magick::chromaBluePrimaryImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_chromaBluePrimaryImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaBluePrimaryImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaBluePrimaryImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaBluePrimaryImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_chromaBluePrimaryImage__wrap_Magick_chromaBluePrimaryImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::chromaBluePrimaryImage *arg1 = (Magick::chromaBluePrimaryImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_chromaBluePrimaryImage__wrap_Magick_chromaBluePrimaryImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::chromaBluePrimaryImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaBluePrimaryImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaBluePrimaryImage_call" "', argument " "1"" of type '" "Magick::chromaBluePrimaryImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::chromaBluePrimaryImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaBluePrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaBluePrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_chromaBluePrimaryImage__wrap_Magick_chromaBluePrimaryImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaBluePrimaryImage_callAsync.");
  }
  context = new _Magick_chromaBluePrimaryImage__wrap_Magick_chromaBluePrimaryImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_chromaBluePrimaryImage__wrap_Magick_chromaBluePrimaryImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaBluePrimaryImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaBluePrimaryImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::chromaBluePrimaryImage *arg1 = (Magick::chromaBluePrimaryImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaBluePrimaryImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaBluePrimaryImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaBluePrimaryImage_call" "', argument " "1"" of type '" "Magick::chromaBluePrimaryImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::chromaBluePrimaryImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaBluePrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaBluePrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::chromaBluePrimaryImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_chromaBluePrimaryImage_templ<SWIG_OBJ_WRAP>::~_Magick_chromaBluePrimaryImage_templ() {
  auto arg1 = reinterpret_cast<Magick::chromaBluePrimaryImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_chromaGreenPrimaryImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaGreenPrimaryImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__chromaGreenPrimaryImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::chromaGreenPrimaryImage *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_chromaGreenPrimaryImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_chromaGreenPrimaryImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_chromaGreenPrimaryImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_chromaGreenPrimaryImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::chromaGreenPrimaryImage *)new Magick::chromaGreenPrimaryImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_chromaGreenPrimaryImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaGreenPrimaryImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaGreenPrimaryImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaGreenPrimaryImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_chromaGreenPrimaryImage__wrap_Magick_chromaGreenPrimaryImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::chromaGreenPrimaryImage *arg1 = (Magick::chromaGreenPrimaryImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_chromaGreenPrimaryImage__wrap_Magick_chromaGreenPrimaryImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::chromaGreenPrimaryImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaGreenPrimaryImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaGreenPrimaryImage_call" "', argument " "1"" of type '" "Magick::chromaGreenPrimaryImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::chromaGreenPrimaryImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaGreenPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaGreenPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_chromaGreenPrimaryImage__wrap_Magick_chromaGreenPrimaryImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaGreenPrimaryImage_callAsync.");
  }
  context = new _Magick_chromaGreenPrimaryImage__wrap_Magick_chromaGreenPrimaryImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_chromaGreenPrimaryImage__wrap_Magick_chromaGreenPrimaryImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaGreenPrimaryImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaGreenPrimaryImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::chromaGreenPrimaryImage *arg1 = (Magick::chromaGreenPrimaryImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaGreenPrimaryImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaGreenPrimaryImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaGreenPrimaryImage_call" "', argument " "1"" of type '" "Magick::chromaGreenPrimaryImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::chromaGreenPrimaryImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaGreenPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaGreenPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::chromaGreenPrimaryImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_chromaGreenPrimaryImage_templ<SWIG_OBJ_WRAP>::~_Magick_chromaGreenPrimaryImage_templ() {
  auto arg1 = reinterpret_cast<Magick::chromaGreenPrimaryImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_chromaRedPrimaryImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaRedPrimaryImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__chromaRedPrimaryImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::chromaRedPrimaryImage *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_chromaRedPrimaryImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_chromaRedPrimaryImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_chromaRedPrimaryImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_chromaRedPrimaryImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::chromaRedPrimaryImage *)new Magick::chromaRedPrimaryImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_chromaRedPrimaryImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaRedPrimaryImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaRedPrimaryImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaRedPrimaryImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_chromaRedPrimaryImage__wrap_Magick_chromaRedPrimaryImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::chromaRedPrimaryImage *arg1 = (Magick::chromaRedPrimaryImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_chromaRedPrimaryImage__wrap_Magick_chromaRedPrimaryImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::chromaRedPrimaryImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaRedPrimaryImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaRedPrimaryImage_call" "', argument " "1"" of type '" "Magick::chromaRedPrimaryImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::chromaRedPrimaryImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaRedPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaRedPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_chromaRedPrimaryImage__wrap_Magick_chromaRedPrimaryImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaRedPrimaryImage_callAsync.");
  }
  context = new _Magick_chromaRedPrimaryImage__wrap_Magick_chromaRedPrimaryImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_chromaRedPrimaryImage__wrap_Magick_chromaRedPrimaryImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaRedPrimaryImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaRedPrimaryImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::chromaRedPrimaryImage *arg1 = (Magick::chromaRedPrimaryImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaRedPrimaryImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaRedPrimaryImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaRedPrimaryImage_call" "', argument " "1"" of type '" "Magick::chromaRedPrimaryImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::chromaRedPrimaryImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaRedPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaRedPrimaryImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::chromaRedPrimaryImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_chromaRedPrimaryImage_templ<SWIG_OBJ_WRAP>::~_Magick_chromaRedPrimaryImage_templ() {
  auto arg1 = reinterpret_cast<Magick::chromaRedPrimaryImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_chromaWhitePointImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaWhitePointImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__chromaWhitePointImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double arg2 ;
  double arg3 ;
  double val1 ;
  int ecode1 = 0 ;
  double val2 ;
  int ecode2 = 0 ;
  double val3 ;
  int ecode3 = 0 ;
  Magick::chromaWhitePointImage *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_chromaWhitePointImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_chromaWhitePointImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);ecode2 = SWIG_AsVal_double(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_chromaWhitePointImage" "', argument " "2"" of type '" "double""'");
  } 
  arg2 = static_cast< double >(val2);ecode3 = SWIG_AsVal_double(info[2], &val3);
  if (!SWIG_IsOK(ecode3)) {
    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_Magick_chromaWhitePointImage" "', argument " "3"" of type '" "double""'");
  } 
  arg3 = static_cast< double >(val3);{
    try {
      result = (Magick::chromaWhitePointImage *)new Magick::chromaWhitePointImage(arg1,arg2,arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_chromaWhitePointImage_templ<SWIG_OBJ_WRAP>::_Magick_chromaWhitePointImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaWhitePointImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaWhitePointImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_chromaWhitePointImage__wrap_Magick_chromaWhitePointImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::chromaWhitePointImage *arg1 = (Magick::chromaWhitePointImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_chromaWhitePointImage__wrap_Magick_chromaWhitePointImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::chromaWhitePointImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaWhitePointImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaWhitePointImage_call" "', argument " "1"" of type '" "Magick::chromaWhitePointImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::chromaWhitePointImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaWhitePointImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaWhitePointImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_chromaWhitePointImage__wrap_Magick_chromaWhitePointImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaWhitePointImage_callAsync.");
  }
  context = new _Magick_chromaWhitePointImage__wrap_Magick_chromaWhitePointImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_chromaWhitePointImage__wrap_Magick_chromaWhitePointImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_chromaWhitePointImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_chromaWhitePointImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::chromaWhitePointImage *arg1 = (Magick::chromaWhitePointImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_chromaWhitePointImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__chromaWhitePointImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_chromaWhitePointImage_call" "', argument " "1"" of type '" "Magick::chromaWhitePointImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::chromaWhitePointImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_chromaWhitePointImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_chromaWhitePointImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::chromaWhitePointImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_chromaWhitePointImage_templ<SWIG_OBJ_WRAP>::~_Magick_chromaWhitePointImage_templ() {
  auto arg1 = reinterpret_cast<Magick::chromaWhitePointImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_colorFuzzImage_templ<SWIG_OBJ_WRAP>::_Magick_colorFuzzImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__colorFuzzImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  double arg1 ;
  double val1 ;
  int ecode1 = 0 ;
  Magick::colorFuzzImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_colorFuzzImage.");
  }
  ecode1 = SWIG_AsVal_double(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_colorFuzzImage" "', argument " "1"" of type '" "double""'");
  } 
  arg1 = static_cast< double >(val1);{
    try {
      result = (Magick::colorFuzzImage *)new Magick::colorFuzzImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_colorFuzzImage_templ<SWIG_OBJ_WRAP>::_Magick_colorFuzzImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorFuzzImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorFuzzImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_colorFuzzImage__wrap_Magick_colorFuzzImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::colorFuzzImage *arg1 = (Magick::colorFuzzImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_colorFuzzImage__wrap_Magick_colorFuzzImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::colorFuzzImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorFuzzImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorFuzzImage_call" "', argument " "1"" of type '" "Magick::colorFuzzImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::colorFuzzImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorFuzzImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorFuzzImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_colorFuzzImage__wrap_Magick_colorFuzzImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorFuzzImage_callAsync.");
  }
  context = new _Magick_colorFuzzImage__wrap_Magick_colorFuzzImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_colorFuzzImage__wrap_Magick_colorFuzzImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorFuzzImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorFuzzImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::colorFuzzImage *arg1 = (Magick::colorFuzzImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorFuzzImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorFuzzImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorFuzzImage_call" "', argument " "1"" of type '" "Magick::colorFuzzImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::colorFuzzImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorFuzzImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorFuzzImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::colorFuzzImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_colorFuzzImage_templ<SWIG_OBJ_WRAP>::~_Magick_colorFuzzImage_templ() {
  auto arg1 = reinterpret_cast<Magick::colorFuzzImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_colorMapImage_templ<SWIG_OBJ_WRAP>::_Magick_colorMapImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__colorMapImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  Magick::Color *arg2 = 0 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::Color from_string_temp2 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::colorMapImage *result;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_colorMapImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_colorMapImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[1].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg2
        std::string *arg2;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_colorMapImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_colorMapImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        };
        // Construct the object from this string
        from_string_temp2 = Magick::Color(*arg2);
        // The string is not needed anymore
        delete arg2;
      }
      // We then assign the local temporary arg2 to the real arg2
      arg2 = &from_string_temp2;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[1], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_colorMapImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_colorMapImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::colorMapImage *)new Magick::colorMapImage(arg1,(Magick::Color const &)*arg2);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_colorMapImage_templ<SWIG_OBJ_WRAP>::_Magick_colorMapImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorMapImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorMapImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_colorMapImage__wrap_Magick_colorMapImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::colorMapImage *arg1 = (Magick::colorMapImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_colorMapImage__wrap_Magick_colorMapImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::colorMapImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorMapImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorMapImage_call" "', argument " "1"" of type '" "Magick::colorMapImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::colorMapImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorMapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorMapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_colorMapImage__wrap_Magick_colorMapImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorMapImage_callAsync.");
  }
  context = new _Magick_colorMapImage__wrap_Magick_colorMapImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_colorMapImage__wrap_Magick_colorMapImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_colorMapImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_colorMapImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::colorMapImage *arg1 = (Magick::colorMapImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_colorMapImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__colorMapImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_colorMapImage_call" "', argument " "1"" of type '" "Magick::colorMapImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::colorMapImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_colorMapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_colorMapImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::colorMapImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_colorMapImage_templ<SWIG_OBJ_WRAP>::~_Magick_colorMapImage_templ() {
  auto arg1 = reinterpret_cast<Magick::colorMapImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_composeImage_templ<SWIG_OBJ_WRAP>::_Magick_composeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__composeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::CompositeOperator arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::composeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_composeImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_composeImage" "', argument " "1"" of type '" "Magick::CompositeOperator""'");
  } 
  arg1 = static_cast< Magick::CompositeOperator >(val1);{
    try {
      result = (Magick::composeImage *)new Magick::composeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_composeImage_templ<SWIG_OBJ_WRAP>::_Magick_composeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_composeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_composeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_composeImage__wrap_Magick_composeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::composeImage *arg1 = (Magick::composeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_composeImage__wrap_Magick_composeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::composeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__composeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_composeImage_call" "', argument " "1"" of type '" "Magick::composeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::composeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_composeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_composeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_composeImage__wrap_Magick_composeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_composeImage_callAsync.");
  }
  context = new _Magick_composeImage__wrap_Magick_composeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_composeImage__wrap_Magick_composeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_composeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_composeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::composeImage *arg1 = (Magick::composeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_composeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__composeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_composeImage_call" "', argument " "1"" of type '" "Magick::composeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::composeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_composeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_composeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::composeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_composeImage_templ<SWIG_OBJ_WRAP>::~_Magick_composeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::composeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_compressTypeImage_templ<SWIG_OBJ_WRAP>::_Magick_compressTypeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__compressTypeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::CompressionType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::compressTypeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_compressTypeImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_compressTypeImage" "', argument " "1"" of type '" "Magick::CompressionType""'");
  } 
  arg1 = static_cast< Magick::CompressionType >(val1);{
    try {
      result = (Magick::compressTypeImage *)new Magick::compressTypeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_compressTypeImage_templ<SWIG_OBJ_WRAP>::_Magick_compressTypeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compressTypeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_compressTypeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_compressTypeImage__wrap_Magick_compressTypeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::compressTypeImage *arg1 = (Magick::compressTypeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_compressTypeImage__wrap_Magick_compressTypeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::compressTypeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__compressTypeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_compressTypeImage_call" "', argument " "1"" of type '" "Magick::compressTypeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::compressTypeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_compressTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_compressTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_compressTypeImage__wrap_Magick_compressTypeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_compressTypeImage_callAsync.");
  }
  context = new _Magick_compressTypeImage__wrap_Magick_compressTypeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_compressTypeImage__wrap_Magick_compressTypeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_compressTypeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_compressTypeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::compressTypeImage *arg1 = (Magick::compressTypeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_compressTypeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__compressTypeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_compressTypeImage_call" "', argument " "1"" of type '" "Magick::compressTypeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::compressTypeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_compressTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_compressTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::compressTypeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_compressTypeImage_templ<SWIG_OBJ_WRAP>::~_Magick_compressTypeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::compressTypeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_densityImage_templ<SWIG_OBJ_WRAP>::_Magick_densityImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__densityImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Point *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::densityImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_densityImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Point,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_densityImage" "', argument " "1"" of type '" "Magick::Point const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_densityImage" "', argument " "1"" of type '" "Magick::Point const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Point * >(argp1);{
    try {
      result = (Magick::densityImage *)new Magick::densityImage((Magick::Point const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_densityImage_templ<SWIG_OBJ_WRAP>::_Magick_densityImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_densityImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_densityImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_densityImage__wrap_Magick_densityImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::densityImage *arg1 = (Magick::densityImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_densityImage__wrap_Magick_densityImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::densityImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__densityImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_densityImage_call" "', argument " "1"" of type '" "Magick::densityImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::densityImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_densityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_densityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_densityImage__wrap_Magick_densityImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_densityImage_callAsync.");
  }
  context = new _Magick_densityImage__wrap_Magick_densityImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_densityImage__wrap_Magick_densityImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_densityImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_densityImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::densityImage *arg1 = (Magick::densityImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_densityImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__densityImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_densityImage_call" "', argument " "1"" of type '" "Magick::densityImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::densityImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_densityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_densityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::densityImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_densityImage_templ<SWIG_OBJ_WRAP>::~_Magick_densityImage_templ() {
  auto arg1 = reinterpret_cast<Magick::densityImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_depthImage_templ<SWIG_OBJ_WRAP>::_Magick_depthImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__depthImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::depthImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_depthImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_depthImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::depthImage *)new Magick::depthImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_depthImage_templ<SWIG_OBJ_WRAP>::_Magick_depthImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_depthImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_depthImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_depthImage__wrap_Magick_depthImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::depthImage *arg1 = (Magick::depthImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_depthImage__wrap_Magick_depthImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::depthImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__depthImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_depthImage_call" "', argument " "1"" of type '" "Magick::depthImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::depthImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_depthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_depthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_depthImage__wrap_Magick_depthImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_depthImage_callAsync.");
  }
  context = new _Magick_depthImage__wrap_Magick_depthImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_depthImage__wrap_Magick_depthImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_depthImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_depthImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::depthImage *arg1 = (Magick::depthImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_depthImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__depthImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_depthImage_call" "', argument " "1"" of type '" "Magick::depthImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::depthImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_depthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_depthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::depthImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_depthImage_templ<SWIG_OBJ_WRAP>::~_Magick_depthImage_templ() {
  auto arg1 = reinterpret_cast<Magick::depthImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_endianImage_templ<SWIG_OBJ_WRAP>::_Magick_endianImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__endianImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::EndianType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::endianImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_endianImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_endianImage" "', argument " "1"" of type '" "Magick::EndianType""'");
  } 
  arg1 = static_cast< Magick::EndianType >(val1);{
    try {
      result = (Magick::endianImage *)new Magick::endianImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_endianImage_templ<SWIG_OBJ_WRAP>::_Magick_endianImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_endianImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_endianImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_endianImage__wrap_Magick_endianImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::endianImage *arg1 = (Magick::endianImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_endianImage__wrap_Magick_endianImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::endianImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__endianImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_endianImage_call" "', argument " "1"" of type '" "Magick::endianImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::endianImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_endianImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_endianImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_endianImage__wrap_Magick_endianImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_endianImage_callAsync.");
  }
  context = new _Magick_endianImage__wrap_Magick_endianImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_endianImage__wrap_Magick_endianImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_endianImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_endianImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::endianImage *arg1 = (Magick::endianImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_endianImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__endianImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_endianImage_call" "', argument " "1"" of type '" "Magick::endianImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::endianImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_endianImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_endianImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::endianImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_endianImage_templ<SWIG_OBJ_WRAP>::~_Magick_endianImage_templ() {
  auto arg1 = reinterpret_cast<Magick::endianImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_fileNameImage_templ<SWIG_OBJ_WRAP>::_Magick_fileNameImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__fileNameImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::fileNameImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_fileNameImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_fileNameImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_fileNameImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::fileNameImage *)new Magick::fileNameImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_fileNameImage_templ<SWIG_OBJ_WRAP>::_Magick_fileNameImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_fileNameImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_fileNameImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_fileNameImage__wrap_Magick_fileNameImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::fileNameImage *arg1 = (Magick::fileNameImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_fileNameImage__wrap_Magick_fileNameImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::fileNameImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__fileNameImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_fileNameImage_call" "', argument " "1"" of type '" "Magick::fileNameImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::fileNameImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_fileNameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_fileNameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_fileNameImage__wrap_Magick_fileNameImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_fileNameImage_callAsync.");
  }
  context = new _Magick_fileNameImage__wrap_Magick_fileNameImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_fileNameImage__wrap_Magick_fileNameImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_fileNameImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_fileNameImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::fileNameImage *arg1 = (Magick::fileNameImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_fileNameImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__fileNameImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_fileNameImage_call" "', argument " "1"" of type '" "Magick::fileNameImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::fileNameImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_fileNameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_fileNameImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::fileNameImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_fileNameImage_templ<SWIG_OBJ_WRAP>::~_Magick_fileNameImage_templ() {
  auto arg1 = reinterpret_cast<Magick::fileNameImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_filterTypeImage_templ<SWIG_OBJ_WRAP>::_Magick_filterTypeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__filterTypeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::FilterType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::filterTypeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_filterTypeImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_filterTypeImage" "', argument " "1"" of type '" "Magick::FilterType""'");
  } 
  arg1 = static_cast< Magick::FilterType >(val1);{
    try {
      result = (Magick::filterTypeImage *)new Magick::filterTypeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_filterTypeImage_templ<SWIG_OBJ_WRAP>::_Magick_filterTypeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_filterTypeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_filterTypeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_filterTypeImage__wrap_Magick_filterTypeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::filterTypeImage *arg1 = (Magick::filterTypeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_filterTypeImage__wrap_Magick_filterTypeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::filterTypeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__filterTypeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_filterTypeImage_call" "', argument " "1"" of type '" "Magick::filterTypeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::filterTypeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_filterTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_filterTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_filterTypeImage__wrap_Magick_filterTypeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_filterTypeImage_callAsync.");
  }
  context = new _Magick_filterTypeImage__wrap_Magick_filterTypeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_filterTypeImage__wrap_Magick_filterTypeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_filterTypeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_filterTypeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::filterTypeImage *arg1 = (Magick::filterTypeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_filterTypeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__filterTypeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_filterTypeImage_call" "', argument " "1"" of type '" "Magick::filterTypeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::filterTypeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_filterTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_filterTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::filterTypeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_filterTypeImage_templ<SWIG_OBJ_WRAP>::~_Magick_filterTypeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::filterTypeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_fontImage_templ<SWIG_OBJ_WRAP>::_Magick_fontImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__fontImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::fontImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_fontImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_fontImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_fontImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::fontImage *)new Magick::fontImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_fontImage_templ<SWIG_OBJ_WRAP>::_Magick_fontImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_fontImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_fontImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_fontImage__wrap_Magick_fontImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::fontImage *arg1 = (Magick::fontImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_fontImage__wrap_Magick_fontImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::fontImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__fontImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_fontImage_call" "', argument " "1"" of type '" "Magick::fontImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::fontImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_fontImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_fontImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_fontImage__wrap_Magick_fontImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_fontImage_callAsync.");
  }
  context = new _Magick_fontImage__wrap_Magick_fontImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_fontImage__wrap_Magick_fontImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_fontImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_fontImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::fontImage *arg1 = (Magick::fontImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_fontImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__fontImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_fontImage_call" "', argument " "1"" of type '" "Magick::fontImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::fontImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_fontImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_fontImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::fontImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_fontImage_templ<SWIG_OBJ_WRAP>::~_Magick_fontImage_templ() {
  auto arg1 = reinterpret_cast<Magick::fontImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_fontPointsizeImage_templ<SWIG_OBJ_WRAP>::_Magick_fontPointsizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__fontPointsizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::fontPointsizeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_fontPointsizeImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_fontPointsizeImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::fontPointsizeImage *)new Magick::fontPointsizeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_fontPointsizeImage_templ<SWIG_OBJ_WRAP>::_Magick_fontPointsizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_fontPointsizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_fontPointsizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_fontPointsizeImage__wrap_Magick_fontPointsizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::fontPointsizeImage *arg1 = (Magick::fontPointsizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_fontPointsizeImage__wrap_Magick_fontPointsizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::fontPointsizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__fontPointsizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_fontPointsizeImage_call" "', argument " "1"" of type '" "Magick::fontPointsizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::fontPointsizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_fontPointsizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_fontPointsizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_fontPointsizeImage__wrap_Magick_fontPointsizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_fontPointsizeImage_callAsync.");
  }
  context = new _Magick_fontPointsizeImage__wrap_Magick_fontPointsizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_fontPointsizeImage__wrap_Magick_fontPointsizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_fontPointsizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_fontPointsizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::fontPointsizeImage *arg1 = (Magick::fontPointsizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_fontPointsizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__fontPointsizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_fontPointsizeImage_call" "', argument " "1"" of type '" "Magick::fontPointsizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::fontPointsizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_fontPointsizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_fontPointsizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::fontPointsizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_fontPointsizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_fontPointsizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::fontPointsizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_gifDisposeMethodImage_templ<SWIG_OBJ_WRAP>::_Magick_gifDisposeMethodImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__gifDisposeMethodImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::DisposeType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::gifDisposeMethodImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_gifDisposeMethodImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_gifDisposeMethodImage" "', argument " "1"" of type '" "Magick::DisposeType""'");
  } 
  arg1 = static_cast< Magick::DisposeType >(val1);{
    try {
      result = (Magick::gifDisposeMethodImage *)new Magick::gifDisposeMethodImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_gifDisposeMethodImage_templ<SWIG_OBJ_WRAP>::_Magick_gifDisposeMethodImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gifDisposeMethodImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_gifDisposeMethodImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_gifDisposeMethodImage__wrap_Magick_gifDisposeMethodImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::gifDisposeMethodImage *arg1 = (Magick::gifDisposeMethodImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_gifDisposeMethodImage__wrap_Magick_gifDisposeMethodImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::gifDisposeMethodImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__gifDisposeMethodImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_gifDisposeMethodImage_call" "', argument " "1"" of type '" "Magick::gifDisposeMethodImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::gifDisposeMethodImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_gifDisposeMethodImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_gifDisposeMethodImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_gifDisposeMethodImage__wrap_Magick_gifDisposeMethodImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_gifDisposeMethodImage_callAsync.");
  }
  context = new _Magick_gifDisposeMethodImage__wrap_Magick_gifDisposeMethodImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_gifDisposeMethodImage__wrap_Magick_gifDisposeMethodImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_gifDisposeMethodImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_gifDisposeMethodImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::gifDisposeMethodImage *arg1 = (Magick::gifDisposeMethodImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_gifDisposeMethodImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__gifDisposeMethodImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_gifDisposeMethodImage_call" "', argument " "1"" of type '" "Magick::gifDisposeMethodImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::gifDisposeMethodImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_gifDisposeMethodImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_gifDisposeMethodImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::gifDisposeMethodImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_gifDisposeMethodImage_templ<SWIG_OBJ_WRAP>::~_Magick_gifDisposeMethodImage_templ() {
  auto arg1 = reinterpret_cast<Magick::gifDisposeMethodImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_interlaceTypeImage_templ<SWIG_OBJ_WRAP>::_Magick_interlaceTypeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__interlaceTypeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::InterlaceType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::interlaceTypeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_interlaceTypeImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_interlaceTypeImage" "', argument " "1"" of type '" "Magick::InterlaceType""'");
  } 
  arg1 = static_cast< Magick::InterlaceType >(val1);{
    try {
      result = (Magick::interlaceTypeImage *)new Magick::interlaceTypeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_interlaceTypeImage_templ<SWIG_OBJ_WRAP>::_Magick_interlaceTypeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_interlaceTypeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_interlaceTypeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_interlaceTypeImage__wrap_Magick_interlaceTypeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::interlaceTypeImage *arg1 = (Magick::interlaceTypeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_interlaceTypeImage__wrap_Magick_interlaceTypeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::interlaceTypeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__interlaceTypeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_interlaceTypeImage_call" "', argument " "1"" of type '" "Magick::interlaceTypeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::interlaceTypeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_interlaceTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_interlaceTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_interlaceTypeImage__wrap_Magick_interlaceTypeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_interlaceTypeImage_callAsync.");
  }
  context = new _Magick_interlaceTypeImage__wrap_Magick_interlaceTypeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_interlaceTypeImage__wrap_Magick_interlaceTypeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_interlaceTypeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_interlaceTypeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::interlaceTypeImage *arg1 = (Magick::interlaceTypeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_interlaceTypeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__interlaceTypeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_interlaceTypeImage_call" "', argument " "1"" of type '" "Magick::interlaceTypeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::interlaceTypeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_interlaceTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_interlaceTypeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::interlaceTypeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_interlaceTypeImage_templ<SWIG_OBJ_WRAP>::~_Magick_interlaceTypeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::interlaceTypeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_magickImage_templ<SWIG_OBJ_WRAP>::_Magick_magickImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__magickImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::magickImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_magickImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_magickImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_magickImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::magickImage *)new Magick::magickImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_magickImage_templ<SWIG_OBJ_WRAP>::_Magick_magickImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_magickImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_magickImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_magickImage__wrap_Magick_magickImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::magickImage *arg1 = (Magick::magickImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_magickImage__wrap_Magick_magickImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::magickImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__magickImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_magickImage_call" "', argument " "1"" of type '" "Magick::magickImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::magickImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_magickImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_magickImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_magickImage__wrap_Magick_magickImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_magickImage_callAsync.");
  }
  context = new _Magick_magickImage__wrap_Magick_magickImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_magickImage__wrap_Magick_magickImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_magickImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_magickImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::magickImage *arg1 = (Magick::magickImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_magickImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__magickImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_magickImage_call" "', argument " "1"" of type '" "Magick::magickImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::magickImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_magickImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_magickImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::magickImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_magickImage_templ<SWIG_OBJ_WRAP>::~_Magick_magickImage_templ() {
  auto arg1 = reinterpret_cast<Magick::magickImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_alphaFlagImage_templ<SWIG_OBJ_WRAP>::_Magick_alphaFlagImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__alphaFlagImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::alphaFlagImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_alphaFlagImage.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_alphaFlagImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::alphaFlagImage *)new Magick::alphaFlagImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_alphaFlagImage_templ<SWIG_OBJ_WRAP>::_Magick_alphaFlagImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_alphaFlagImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_alphaFlagImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_alphaFlagImage__wrap_Magick_alphaFlagImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::alphaFlagImage *arg1 = (Magick::alphaFlagImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_alphaFlagImage__wrap_Magick_alphaFlagImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::alphaFlagImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__alphaFlagImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_alphaFlagImage_call" "', argument " "1"" of type '" "Magick::alphaFlagImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::alphaFlagImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_alphaFlagImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_alphaFlagImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_alphaFlagImage__wrap_Magick_alphaFlagImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_alphaFlagImage_callAsync.");
  }
  context = new _Magick_alphaFlagImage__wrap_Magick_alphaFlagImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_alphaFlagImage__wrap_Magick_alphaFlagImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_alphaFlagImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_alphaFlagImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::alphaFlagImage *arg1 = (Magick::alphaFlagImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_alphaFlagImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__alphaFlagImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_alphaFlagImage_call" "', argument " "1"" of type '" "Magick::alphaFlagImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::alphaFlagImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_alphaFlagImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_alphaFlagImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::alphaFlagImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_alphaFlagImage_templ<SWIG_OBJ_WRAP>::~_Magick_alphaFlagImage_templ() {
  auto arg1 = reinterpret_cast<Magick::alphaFlagImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_matteColorImage_templ<SWIG_OBJ_WRAP>::_Magick_matteColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__matteColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Color *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::matteColorImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_matteColorImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Color,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_matteColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_matteColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Color * >(argp1);{
    try {
      result = (Magick::matteColorImage *)new Magick::matteColorImage((Magick::Color const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_matteColorImage_templ<SWIG_OBJ_WRAP>::_Magick_matteColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_matteColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_matteColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::matteColorImage *arg1 = (Magick::matteColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_matteColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__matteColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_matteColorImage_call" "', argument " "1"" of type '" "Magick::matteColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::matteColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_matteColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_matteColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::matteColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_matteColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_matteColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::matteColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_monochromeImage_templ<SWIG_OBJ_WRAP>::_Magick_monochromeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__monochromeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::monochromeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_monochromeImage.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_monochromeImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::monochromeImage *)new Magick::monochromeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_monochromeImage_templ<SWIG_OBJ_WRAP>::_Magick_monochromeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_monochromeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_monochromeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_monochromeImage__wrap_Magick_monochromeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::monochromeImage *arg1 = (Magick::monochromeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_monochromeImage__wrap_Magick_monochromeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::monochromeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__monochromeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_monochromeImage_call" "', argument " "1"" of type '" "Magick::monochromeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::monochromeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_monochromeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_monochromeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_monochromeImage__wrap_Magick_monochromeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_monochromeImage_callAsync.");
  }
  context = new _Magick_monochromeImage__wrap_Magick_monochromeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_monochromeImage__wrap_Magick_monochromeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_monochromeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_monochromeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::monochromeImage *arg1 = (Magick::monochromeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_monochromeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__monochromeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_monochromeImage_call" "', argument " "1"" of type '" "Magick::monochromeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::monochromeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_monochromeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_monochromeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::monochromeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_monochromeImage_templ<SWIG_OBJ_WRAP>::~_Magick_monochromeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::monochromeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_pixelColorImage_templ<SWIG_OBJ_WRAP>::_Magick_pixelColorImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__pixelColorImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  ::ssize_t arg1 ;
  ::ssize_t arg2 ;
  Magick::Color *arg3 = 0 ;
  int val1 ;
  int ecode1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  Magick::Color from_string_temp3 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::pixelColorImage *result;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_pixelColorImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_pixelColorImage" "', argument " "1"" of type '" "::ssize_t""'");
  } 
  arg1 = static_cast< ::ssize_t >(val1);ecode2 = SWIG_AsVal_int(info[1], &val2);
  if (!SWIG_IsOK(ecode2)) {
    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_Magick_pixelColorImage" "', argument " "2"" of type '" "::ssize_t""'");
  } 
  arg2 = static_cast< ::ssize_t >(val2);{
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[2].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg3
        std::string *arg3;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[2], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_pixelColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_pixelColorImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        };
        // Construct the object from this string
        from_string_temp3 = Magick::Color(*arg3);
        // The string is not needed anymore
        delete arg3;
      }
      // We then assign the local temporary arg3 to the real arg3
      arg3 = &from_string_temp3;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[2], &argp1, SWIGTYPE_p_Magick__Color,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_pixelColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_pixelColorImage" "', argument " "1"" of type '" "Magick::Color const &""'"); 
      }
      arg3 = reinterpret_cast< Magick::Color * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::pixelColorImage *)new Magick::pixelColorImage(arg1,arg2,(Magick::Color const &)*arg3);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_pixelColorImage_templ<SWIG_OBJ_WRAP>::_Magick_pixelColorImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_pixelColorImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_pixelColorImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::pixelColorImage *arg1 = (Magick::pixelColorImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_pixelColorImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__pixelColorImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_pixelColorImage_call" "', argument " "1"" of type '" "Magick::pixelColorImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::pixelColorImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_pixelColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_pixelColorImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::pixelColorImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_pixelColorImage_templ<SWIG_OBJ_WRAP>::~_Magick_pixelColorImage_templ() {
  auto arg1 = reinterpret_cast<Magick::pixelColorImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_pageImage_templ<SWIG_OBJ_WRAP>::_Magick_pageImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__pageImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  Magick::pageImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_pageImage.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_pageImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_pageImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
  }
  arg1 = reinterpret_cast< Magick::Geometry * >(argp1);{
    try {
      result = (Magick::pageImage *)new Magick::pageImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_pageImage_templ<SWIG_OBJ_WRAP>::_Magick_pageImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_pageImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_pageImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_pageImage__wrap_Magick_pageImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::pageImage *arg1 = (Magick::pageImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_pageImage__wrap_Magick_pageImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::pageImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__pageImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_pageImage_call" "', argument " "1"" of type '" "Magick::pageImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::pageImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_pageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_pageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_pageImage__wrap_Magick_pageImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_pageImage_callAsync.");
  }
  context = new _Magick_pageImage__wrap_Magick_pageImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_pageImage__wrap_Magick_pageImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_pageImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_pageImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::pageImage *arg1 = (Magick::pageImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_pageImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__pageImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_pageImage_call" "', argument " "1"" of type '" "Magick::pageImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::pageImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_pageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_pageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::pageImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_pageImage_templ<SWIG_OBJ_WRAP>::~_Magick_pageImage_templ() {
  auto arg1 = reinterpret_cast<Magick::pageImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_qualityImage_templ<SWIG_OBJ_WRAP>::_Magick_qualityImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__qualityImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::qualityImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_qualityImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_qualityImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::qualityImage *)new Magick::qualityImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_qualityImage_templ<SWIG_OBJ_WRAP>::_Magick_qualityImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_qualityImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_qualityImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_qualityImage__wrap_Magick_qualityImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::qualityImage *arg1 = (Magick::qualityImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_qualityImage__wrap_Magick_qualityImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::qualityImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__qualityImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_qualityImage_call" "', argument " "1"" of type '" "Magick::qualityImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::qualityImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_qualityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_qualityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_qualityImage__wrap_Magick_qualityImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_qualityImage_callAsync.");
  }
  context = new _Magick_qualityImage__wrap_Magick_qualityImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_qualityImage__wrap_Magick_qualityImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_qualityImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_qualityImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::qualityImage *arg1 = (Magick::qualityImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_qualityImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__qualityImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_qualityImage_call" "', argument " "1"" of type '" "Magick::qualityImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::qualityImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_qualityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_qualityImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::qualityImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_qualityImage_templ<SWIG_OBJ_WRAP>::~_Magick_qualityImage_templ() {
  auto arg1 = reinterpret_cast<Magick::qualityImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_quantizeColorsImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeColorsImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__quantizeColorsImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::quantizeColorsImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_quantizeColorsImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_quantizeColorsImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::quantizeColorsImage *)new Magick::quantizeColorsImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeColorsImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeColorsImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeColorsImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeColorsImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::quantizeColorsImage *arg1 = (Magick::quantizeColorsImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeColorsImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeColorsImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeColorsImage_call" "', argument " "1"" of type '" "Magick::quantizeColorsImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::quantizeColorsImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeColorsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeColorsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::quantizeColorsImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeColorsImage_templ<SWIG_OBJ_WRAP>::~_Magick_quantizeColorsImage_templ() {
  auto arg1 = reinterpret_cast<Magick::quantizeColorsImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_quantizeColorSpaceImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeColorSpaceImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__quantizeColorSpaceImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::ColorspaceType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::quantizeColorSpaceImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_quantizeColorSpaceImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_quantizeColorSpaceImage" "', argument " "1"" of type '" "Magick::ColorspaceType""'");
  } 
  arg1 = static_cast< Magick::ColorspaceType >(val1);{
    try {
      result = (Magick::quantizeColorSpaceImage *)new Magick::quantizeColorSpaceImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeColorSpaceImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeColorSpaceImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeColorSpaceImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeColorSpaceImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::quantizeColorSpaceImage *arg1 = (Magick::quantizeColorSpaceImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeColorSpaceImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeColorSpaceImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeColorSpaceImage_call" "', argument " "1"" of type '" "Magick::quantizeColorSpaceImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::quantizeColorSpaceImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeColorSpaceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeColorSpaceImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::quantizeColorSpaceImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeColorSpaceImage_templ<SWIG_OBJ_WRAP>::~_Magick_quantizeColorSpaceImage_templ() {
  auto arg1 = reinterpret_cast<Magick::quantizeColorSpaceImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_quantizeDitherImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeDitherImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__quantizeDitherImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::quantizeDitherImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_quantizeDitherImage.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_quantizeDitherImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::quantizeDitherImage *)new Magick::quantizeDitherImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeDitherImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeDitherImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeDitherImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeDitherImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_quantizeDitherImage__wrap_Magick_quantizeDitherImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::quantizeDitherImage *arg1 = (Magick::quantizeDitherImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_quantizeDitherImage__wrap_Magick_quantizeDitherImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::quantizeDitherImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeDitherImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeDitherImage_call" "', argument " "1"" of type '" "Magick::quantizeDitherImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::quantizeDitherImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeDitherImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeDitherImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_quantizeDitherImage__wrap_Magick_quantizeDitherImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeDitherImage_callAsync.");
  }
  context = new _Magick_quantizeDitherImage__wrap_Magick_quantizeDitherImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_quantizeDitherImage__wrap_Magick_quantizeDitherImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeDitherImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeDitherImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::quantizeDitherImage *arg1 = (Magick::quantizeDitherImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeDitherImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeDitherImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeDitherImage_call" "', argument " "1"" of type '" "Magick::quantizeDitherImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::quantizeDitherImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeDitherImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeDitherImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::quantizeDitherImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeDitherImage_templ<SWIG_OBJ_WRAP>::~_Magick_quantizeDitherImage_templ() {
  auto arg1 = reinterpret_cast<Magick::quantizeDitherImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_quantizeTreeDepthImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeTreeDepthImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__quantizeTreeDepthImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::quantizeTreeDepthImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_quantizeTreeDepthImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_quantizeTreeDepthImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::quantizeTreeDepthImage *)new Magick::quantizeTreeDepthImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeTreeDepthImage_templ<SWIG_OBJ_WRAP>::_Magick_quantizeTreeDepthImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeTreeDepthImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeTreeDepthImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_quantizeTreeDepthImage__wrap_Magick_quantizeTreeDepthImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::quantizeTreeDepthImage *arg1 = (Magick::quantizeTreeDepthImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_quantizeTreeDepthImage__wrap_Magick_quantizeTreeDepthImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::quantizeTreeDepthImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeTreeDepthImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeTreeDepthImage_call" "', argument " "1"" of type '" "Magick::quantizeTreeDepthImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::quantizeTreeDepthImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeTreeDepthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeTreeDepthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_quantizeTreeDepthImage__wrap_Magick_quantizeTreeDepthImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeTreeDepthImage_callAsync.");
  }
  context = new _Magick_quantizeTreeDepthImage__wrap_Magick_quantizeTreeDepthImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_quantizeTreeDepthImage__wrap_Magick_quantizeTreeDepthImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_quantizeTreeDepthImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_quantizeTreeDepthImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::quantizeTreeDepthImage *arg1 = (Magick::quantizeTreeDepthImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_quantizeTreeDepthImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__quantizeTreeDepthImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_quantizeTreeDepthImage_call" "', argument " "1"" of type '" "Magick::quantizeTreeDepthImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::quantizeTreeDepthImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_quantizeTreeDepthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_quantizeTreeDepthImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::quantizeTreeDepthImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_quantizeTreeDepthImage_templ<SWIG_OBJ_WRAP>::~_Magick_quantizeTreeDepthImage_templ() {
  auto arg1 = reinterpret_cast<Magick::quantizeTreeDepthImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_renderingIntentImage_templ<SWIG_OBJ_WRAP>::_Magick_renderingIntentImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__renderingIntentImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::RenderingIntent arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::renderingIntentImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_renderingIntentImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_renderingIntentImage" "', argument " "1"" of type '" "Magick::RenderingIntent""'");
  } 
  arg1 = static_cast< Magick::RenderingIntent >(val1);{
    try {
      result = (Magick::renderingIntentImage *)new Magick::renderingIntentImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_renderingIntentImage_templ<SWIG_OBJ_WRAP>::_Magick_renderingIntentImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_renderingIntentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_renderingIntentImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_renderingIntentImage__wrap_Magick_renderingIntentImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::renderingIntentImage *arg1 = (Magick::renderingIntentImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_renderingIntentImage__wrap_Magick_renderingIntentImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::renderingIntentImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__renderingIntentImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_renderingIntentImage_call" "', argument " "1"" of type '" "Magick::renderingIntentImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::renderingIntentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_renderingIntentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_renderingIntentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_renderingIntentImage__wrap_Magick_renderingIntentImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_renderingIntentImage_callAsync.");
  }
  context = new _Magick_renderingIntentImage__wrap_Magick_renderingIntentImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_renderingIntentImage__wrap_Magick_renderingIntentImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_renderingIntentImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_renderingIntentImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::renderingIntentImage *arg1 = (Magick::renderingIntentImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_renderingIntentImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__renderingIntentImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_renderingIntentImage_call" "', argument " "1"" of type '" "Magick::renderingIntentImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::renderingIntentImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_renderingIntentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_renderingIntentImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::renderingIntentImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_renderingIntentImage_templ<SWIG_OBJ_WRAP>::~_Magick_renderingIntentImage_templ() {
  auto arg1 = reinterpret_cast<Magick::renderingIntentImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_resolutionUnitsImage_templ<SWIG_OBJ_WRAP>::_Magick_resolutionUnitsImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__resolutionUnitsImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::ResolutionType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::resolutionUnitsImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_resolutionUnitsImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_resolutionUnitsImage" "', argument " "1"" of type '" "Magick::ResolutionType""'");
  } 
  arg1 = static_cast< Magick::ResolutionType >(val1);{
    try {
      result = (Magick::resolutionUnitsImage *)new Magick::resolutionUnitsImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_resolutionUnitsImage_templ<SWIG_OBJ_WRAP>::_Magick_resolutionUnitsImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_resolutionUnitsImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_resolutionUnitsImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_resolutionUnitsImage__wrap_Magick_resolutionUnitsImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::resolutionUnitsImage *arg1 = (Magick::resolutionUnitsImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_resolutionUnitsImage__wrap_Magick_resolutionUnitsImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::resolutionUnitsImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__resolutionUnitsImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_resolutionUnitsImage_call" "', argument " "1"" of type '" "Magick::resolutionUnitsImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::resolutionUnitsImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_resolutionUnitsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_resolutionUnitsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_resolutionUnitsImage__wrap_Magick_resolutionUnitsImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_resolutionUnitsImage_callAsync.");
  }
  context = new _Magick_resolutionUnitsImage__wrap_Magick_resolutionUnitsImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_resolutionUnitsImage__wrap_Magick_resolutionUnitsImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_resolutionUnitsImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_resolutionUnitsImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::resolutionUnitsImage *arg1 = (Magick::resolutionUnitsImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_resolutionUnitsImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__resolutionUnitsImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_resolutionUnitsImage_call" "', argument " "1"" of type '" "Magick::resolutionUnitsImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::resolutionUnitsImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_resolutionUnitsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_resolutionUnitsImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::resolutionUnitsImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_resolutionUnitsImage_templ<SWIG_OBJ_WRAP>::~_Magick_resolutionUnitsImage_templ() {
  auto arg1 = reinterpret_cast<Magick::resolutionUnitsImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_sceneImage_templ<SWIG_OBJ_WRAP>::_Magick_sceneImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__sceneImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::sceneImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_sceneImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_sceneImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::sceneImage *)new Magick::sceneImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_sceneImage_templ<SWIG_OBJ_WRAP>::_Magick_sceneImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sceneImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sceneImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_sceneImage__wrap_Magick_sceneImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::sceneImage *arg1 = (Magick::sceneImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_sceneImage__wrap_Magick_sceneImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::sceneImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sceneImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sceneImage_call" "', argument " "1"" of type '" "Magick::sceneImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::sceneImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sceneImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sceneImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_sceneImage__wrap_Magick_sceneImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sceneImage_callAsync.");
  }
  context = new _Magick_sceneImage__wrap_Magick_sceneImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_sceneImage__wrap_Magick_sceneImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sceneImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sceneImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::sceneImage *arg1 = (Magick::sceneImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sceneImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sceneImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sceneImage_call" "', argument " "1"" of type '" "Magick::sceneImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::sceneImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sceneImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sceneImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::sceneImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_sceneImage_templ<SWIG_OBJ_WRAP>::~_Magick_sceneImage_templ() {
  auto arg1 = reinterpret_cast<Magick::sceneImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_sizeImage_templ<SWIG_OBJ_WRAP>::_Magick_sizeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__sizeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::Geometry *arg1 = 0 ;
  Magick::Geometry from_string_temp1 ;
  int res1 = SWIG_OLDOBJ ;
  void *argp1 = 0 ;
  int res10 = 0 ;
  Magick::sizeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_sizeImage.");
  }
  {
    // This is a generic typemap that applies
    // to all arguments called FROM_STRING
    if (info[0].IsString()) {
      // If the JS argument is a string
      {
        // We apply the default std::string typemap - it parses
        // its argument in a local temporary arg1
        std::string *arg1;
        {
          std::string *ptr = (std::string *)0;
          res1 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res1)) {
            SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_sizeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_sizeImage" "', argument " "1"" of type '" "std::string const &""'"); 
          }
          arg1 = ptr;
        };
        // Construct the object from this string
        from_string_temp1 = Magick::Geometry(*arg1);
        // The string is not needed anymore
        delete arg1;
      }
      // We then assign the local temporary arg1 to the real arg1
      arg1 = &from_string_temp1;
    } else {
      // If the JS argument is not a string, then
      // default typemap applies
      res10 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_Magick__Geometry,  0 );
      if (!SWIG_IsOK(res10)) {
        SWIG_exception_fail(SWIG_ArgError(res10), "in method '" "new_Magick_sizeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      if (!argp1) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_sizeImage" "', argument " "1"" of type '" "Magick::Geometry const &""'"); 
      }
      arg1 = reinterpret_cast< Magick::Geometry * >(argp1);;
    }
    
  }
  {
    try {
      result = (Magick::sizeImage *)new Magick::sizeImage((Magick::Geometry const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_sizeImage_templ<SWIG_OBJ_WRAP>::_Magick_sizeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sizeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_sizeImage__wrap_Magick_sizeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::sizeImage *arg1 = (Magick::sizeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_sizeImage__wrap_Magick_sizeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::sizeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sizeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sizeImage_call" "', argument " "1"" of type '" "Magick::sizeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::sizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_sizeImage__wrap_Magick_sizeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sizeImage_callAsync.");
  }
  context = new _Magick_sizeImage__wrap_Magick_sizeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_sizeImage__wrap_Magick_sizeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_sizeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_sizeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::sizeImage *arg1 = (Magick::sizeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_sizeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__sizeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_sizeImage_call" "', argument " "1"" of type '" "Magick::sizeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::sizeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_sizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_sizeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::sizeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_sizeImage_templ<SWIG_OBJ_WRAP>::~_Magick_sizeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::sizeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_stripImage_templ<SWIG_OBJ_WRAP>::_Magick_stripImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__stripImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::stripImage *result;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_stripImage.");
  }
  {
    try {
      result = (Magick::stripImage *)new Magick::stripImage();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_stripImage_templ<SWIG_OBJ_WRAP>::_Magick_stripImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_stripImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_stripImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_stripImage__wrap_Magick_stripImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::stripImage *arg1 = (Magick::stripImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_stripImage__wrap_Magick_stripImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::stripImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__stripImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_stripImage_call" "', argument " "1"" of type '" "Magick::stripImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::stripImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_stripImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_stripImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_stripImage__wrap_Magick_stripImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_stripImage_callAsync.");
  }
  context = new _Magick_stripImage__wrap_Magick_stripImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_stripImage__wrap_Magick_stripImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_stripImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_stripImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::stripImage *arg1 = (Magick::stripImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_stripImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__stripImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_stripImage_call" "', argument " "1"" of type '" "Magick::stripImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::stripImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_stripImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_stripImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::stripImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_stripImage_templ<SWIG_OBJ_WRAP>::~_Magick_stripImage_templ() {
  auto arg1 = reinterpret_cast<Magick::stripImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_subImageImage_templ<SWIG_OBJ_WRAP>::_Magick_subImageImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__subImageImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::subImageImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_subImageImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_subImageImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::subImageImage *)new Magick::subImageImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_subImageImage_templ<SWIG_OBJ_WRAP>::_Magick_subImageImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_subImageImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_subImageImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_subImageImage__wrap_Magick_subImageImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::subImageImage *arg1 = (Magick::subImageImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_subImageImage__wrap_Magick_subImageImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::subImageImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__subImageImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_subImageImage_call" "', argument " "1"" of type '" "Magick::subImageImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::subImageImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_subImageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_subImageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_subImageImage__wrap_Magick_subImageImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_subImageImage_callAsync.");
  }
  context = new _Magick_subImageImage__wrap_Magick_subImageImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_subImageImage__wrap_Magick_subImageImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_subImageImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_subImageImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::subImageImage *arg1 = (Magick::subImageImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_subImageImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__subImageImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_subImageImage_call" "', argument " "1"" of type '" "Magick::subImageImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::subImageImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_subImageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_subImageImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::subImageImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_subImageImage_templ<SWIG_OBJ_WRAP>::~_Magick_subImageImage_templ() {
  auto arg1 = reinterpret_cast<Magick::subImageImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_subRangeImage_templ<SWIG_OBJ_WRAP>::_Magick_subRangeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__subRangeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  size_t arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  Magick::subRangeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_subRangeImage.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_subRangeImage" "', argument " "1"" of type '" "size_t""'");
  } 
  arg1 = static_cast< size_t >(val1);{
    try {
      result = (Magick::subRangeImage *)new Magick::subRangeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_subRangeImage_templ<SWIG_OBJ_WRAP>::_Magick_subRangeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_subRangeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_subRangeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_subRangeImage__wrap_Magick_subRangeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::subRangeImage *arg1 = (Magick::subRangeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_subRangeImage__wrap_Magick_subRangeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::subRangeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__subRangeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_subRangeImage_call" "', argument " "1"" of type '" "Magick::subRangeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::subRangeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_subRangeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_subRangeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_subRangeImage__wrap_Magick_subRangeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_subRangeImage_callAsync.");
  }
  context = new _Magick_subRangeImage__wrap_Magick_subRangeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_subRangeImage__wrap_Magick_subRangeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_subRangeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_subRangeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::subRangeImage *arg1 = (Magick::subRangeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_subRangeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__subRangeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_subRangeImage_call" "', argument " "1"" of type '" "Magick::subRangeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::subRangeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_subRangeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_subRangeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::subRangeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_subRangeImage_templ<SWIG_OBJ_WRAP>::~_Magick_subRangeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::subRangeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_textAntiAliasImage_templ<SWIG_OBJ_WRAP>::_Magick_textAntiAliasImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__textAntiAliasImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::textAntiAliasImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_textAntiAliasImage.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_textAntiAliasImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::textAntiAliasImage *)new Magick::textAntiAliasImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_textAntiAliasImage_templ<SWIG_OBJ_WRAP>::_Magick_textAntiAliasImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_textAntiAliasImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_textAntiAliasImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_textAntiAliasImage__wrap_Magick_textAntiAliasImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::textAntiAliasImage *arg1 = (Magick::textAntiAliasImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_textAntiAliasImage__wrap_Magick_textAntiAliasImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::textAntiAliasImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__textAntiAliasImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_textAntiAliasImage_call" "', argument " "1"" of type '" "Magick::textAntiAliasImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::textAntiAliasImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_textAntiAliasImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_textAntiAliasImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_textAntiAliasImage__wrap_Magick_textAntiAliasImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_textAntiAliasImage_callAsync.");
  }
  context = new _Magick_textAntiAliasImage__wrap_Magick_textAntiAliasImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_textAntiAliasImage__wrap_Magick_textAntiAliasImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_textAntiAliasImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_textAntiAliasImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::textAntiAliasImage *arg1 = (Magick::textAntiAliasImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_textAntiAliasImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__textAntiAliasImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_textAntiAliasImage_call" "', argument " "1"" of type '" "Magick::textAntiAliasImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::textAntiAliasImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_textAntiAliasImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_textAntiAliasImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::textAntiAliasImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_textAntiAliasImage_templ<SWIG_OBJ_WRAP>::~_Magick_textAntiAliasImage_templ() {
  auto arg1 = reinterpret_cast<Magick::textAntiAliasImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_typeImage_templ<SWIG_OBJ_WRAP>::_Magick_typeImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__typeImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  Magick::ImageType arg1 ;
  int val1 ;
  int ecode1 = 0 ;
  Magick::typeImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_typeImage.");
  }
  ecode1 = SWIG_AsVal_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_typeImage" "', argument " "1"" of type '" "Magick::ImageType""'");
  } 
  arg1 = static_cast< Magick::ImageType >(val1);{
    try {
      result = (Magick::typeImage *)new Magick::typeImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_typeImage_templ<SWIG_OBJ_WRAP>::_Magick_typeImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_typeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_typeImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_typeImage__wrap_Magick_typeImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::typeImage *arg1 = (Magick::typeImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_typeImage__wrap_Magick_typeImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::typeImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__typeImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_typeImage_call" "', argument " "1"" of type '" "Magick::typeImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::typeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_typeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_typeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_typeImage__wrap_Magick_typeImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_typeImage_callAsync.");
  }
  context = new _Magick_typeImage__wrap_Magick_typeImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_typeImage__wrap_Magick_typeImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_typeImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_typeImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::typeImage *arg1 = (Magick::typeImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_typeImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__typeImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_typeImage_call" "', argument " "1"" of type '" "Magick::typeImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::typeImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_typeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_typeImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::typeImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_typeImage_templ<SWIG_OBJ_WRAP>::~_Magick_typeImage_templ() {
  auto arg1 = reinterpret_cast<Magick::typeImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_verboseImage_templ<SWIG_OBJ_WRAP>::_Magick_verboseImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__verboseImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  bool arg1 ;
  bool val1 ;
  int ecode1 = 0 ;
  Magick::verboseImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_verboseImage.");
  }
  ecode1 = SWIG_AsVal_bool(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Magick_verboseImage" "', argument " "1"" of type '" "bool""'");
  } 
  arg1 = static_cast< bool >(val1);{
    try {
      result = (Magick::verboseImage *)new Magick::verboseImage(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_verboseImage_templ<SWIG_OBJ_WRAP>::_Magick_verboseImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_verboseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_verboseImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_verboseImage__wrap_Magick_verboseImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::verboseImage *arg1 = (Magick::verboseImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_verboseImage__wrap_Magick_verboseImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::verboseImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__verboseImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_verboseImage_call" "', argument " "1"" of type '" "Magick::verboseImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::verboseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_verboseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_verboseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_verboseImage__wrap_Magick_verboseImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_verboseImage_callAsync.");
  }
  context = new _Magick_verboseImage__wrap_Magick_verboseImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_verboseImage__wrap_Magick_verboseImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_verboseImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_verboseImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::verboseImage *arg1 = (Magick::verboseImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_verboseImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__verboseImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_verboseImage_call" "', argument " "1"" of type '" "Magick::verboseImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::verboseImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_verboseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_verboseImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::verboseImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_verboseImage_templ<SWIG_OBJ_WRAP>::~_Magick_verboseImage_templ() {
  auto arg1 = reinterpret_cast<Magick::verboseImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


template <typename SWIG_OBJ_WRAP>
// js_ctor
// This is the main constructor
_Magick_x11DisplayImage_templ<SWIG_OBJ_WRAP>::_Magick_x11DisplayImage_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  
  this->info = SWIGTYPE_p_Magick__x11DisplayImage;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  this->owned = true;
  
  std::string *arg1 = 0 ;
  int res1 = SWIG_OLDOBJ ;
  Magick::x11DisplayImage *result;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_Magick_x11DisplayImage.");
  }
  {
    {
      std::string *ptr = (std::string *)0;
      res1 = SWIG_AsPtr_std_string(info[0], &ptr);
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Magick_x11DisplayImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      if (!ptr) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Magick_x11DisplayImage" "', argument " "1"" of type '" "std::string const &""'"); 
      }
      arg1 = ptr;
    }
  }
  {
    try {
      result = (Magick::x11DisplayImage *)new Magick::x11DisplayImage((std::string const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  if (SWIG_IsNewObj(res1)) delete arg1;
  
  this->self = result;
  return;
  goto fail;
fail:
  return;
}

// This is the bypass constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_Magick_x11DisplayImage_templ<SWIG_OBJ_WRAP>::_Magick_x11DisplayImage_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function_async
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_x11DisplayImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_x11DisplayImage_callAsync(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _Magick_x11DisplayImage__wrap_Magick_x11DisplayImage_callAsync_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::x11DisplayImage *arg1 = (Magick::x11DisplayImage *) 0 ;
    Magick::Image *arg2 = 0 ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _Magick_x11DisplayImage__wrap_Magick_x11DisplayImage_callAsync_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      ((Magick::x11DisplayImage const *)arg1)->operator ()(*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__x11DisplayImage, 0 |  0 );
      if (!SWIG_IsOK(res1)) {
        SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_x11DisplayImage_call" "', argument " "1"" of type '" "Magick::x11DisplayImage const *""'"); 
      }
      arg1 = reinterpret_cast< Magick::x11DisplayImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_x11DisplayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_x11DisplayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info.This().IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info.This().ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _Magick_x11DisplayImage__wrap_Magick_x11DisplayImage_callAsync_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_x11DisplayImage_callAsync.");
  }
  context = new _Magick_x11DisplayImage__wrap_Magick_x11DisplayImage_callAsync_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__Magick_x11DisplayImage__wrap_Magick_x11DisplayImage_callAsync_Async_Worker", context);
  return worker->Run(info);
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _Magick_x11DisplayImage_templ<SWIG_OBJ_WRAP>::_wrap_Magick_x11DisplayImage_call(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::x11DisplayImage *arg1 = (Magick::x11DisplayImage *) 0 ;
  Magick::Image *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_Magick_x11DisplayImage_call.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_Magick__x11DisplayImage, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Magick_x11DisplayImage_call" "', argument " "1"" of type '" "Magick::x11DisplayImage const *""'"); 
    }
    arg1 = reinterpret_cast< Magick::x11DisplayImage * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Magick_x11DisplayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Magick_x11DisplayImage_call" "', argument " "2"" of type '" "Magick::Image &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info.This().IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info.This().ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        ((Magick::x11DisplayImage const *)arg1)->operator ()(*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_Magick_x11DisplayImage_templ<SWIG_OBJ_WRAP>::~_Magick_x11DisplayImage_templ() {
  auto arg1 = reinterpret_cast<Magick::x11DisplayImage *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_new_std_coderInfoArray__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::vector< Magick::CoderInfo > *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_std_coderInfoArray__SWIG_0.");
  }
  {
    try {
      result = (std::vector< Magick::CoderInfo > *)new std::vector< Magick::CoderInfo >();
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_new_std_coderInfoArray__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::vector< Magick::CoderInfo >::size_type arg1 ;
  unsigned int val1 ;
  int ecode1 = 0 ;
  std::vector< Magick::CoderInfo > *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_std_coderInfoArray__SWIG_1.");
  }
  ecode1 = SWIG_AsVal_unsigned_SS_int(info[0], &val1);
  if (!SWIG_IsOK(ecode1)) {
    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_std_coderInfoArray" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo >::size_type""'");
  } 
  arg1 = static_cast< std::vector< Magick::CoderInfo >::size_type >(val1);{
    try {
      result = (std::vector< Magick::CoderInfo > *)new std::vector< Magick::CoderInfo >(arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_overloaded_ctor
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_new_std_coderInfoArray__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  std::vector< Magick::CoderInfo > *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  std::vector< Magick::CoderInfo > *result;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->owned = true;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_new_std_coderInfoArray__SWIG_2.");
  }
  res1 = SWIG_ConvertPtr(info[0], &argp1, SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t,  0 );
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_std_coderInfoArray" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > const &""'"); 
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_std_coderInfoArray" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > const &""'"); 
  }
  arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);{
    try {
      result = (std::vector< Magick::CoderInfo > *)new std::vector< Magick::CoderInfo >((std::vector< Magick::CoderInfo > const &)*arg1);
    } catch (const Magick::Exception &e) {
      do {
        SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
      } while (0);
      SWIG_fail;
    }
  }
  
  
  this->self = result;
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_ctor_dispatcher
template <typename SWIG_OBJ_WRAP>
_std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_std_coderInfoArray_templ(const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  Napi::Env env = info.Env();
  Napi::Object self;
  NAPI_CHECK_RESULT(info.This().ToObject(), self);
  this->info = SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t;
  if (info.Length() == 1 && info[0].IsExternal()) {
    // This constructor has been called internally from C++/SWIG
    // to wrap an already existing C++ object in JS
    this->self = info[0].As<Napi::External<void>>().Data();
    this->owned = false;
    return;
  }
  
  // switch all cases by means of series of if-returns.
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_std_coderInfoArray__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_std_coderInfoArray__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_std_coderInfoArray__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_std_coderInfoArray__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  // js_ctor_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      _wrap_new_std_coderInfoArray__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return;
#else
    _wrap_new_std_coderInfoArray__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return;
    }
#endif
  }
  
  
  // default:
  SWIG_Error(SWIG_ERROR, "Illegal arguments for construction of _std_coderInfoArray");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
  return;
#endif
}

// This is the extendable constructor to be used from child classes
template <typename SWIG_OBJ_WRAP>
_std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_std_coderInfoArray_templ(bool, const Napi::CallbackInfo &info)
:SWIG_NAPI_ObjectWrap_templ<SWIG_OBJ_WRAP>(true, info) {
  
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_size(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::vector< Magick::CoderInfo >::size_type result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_size.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_size" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > const *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((std::vector< Magick::CoderInfo > const *)arg1)->size();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_capacity(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::vector< Magick::CoderInfo >::size_type result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_capacity.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_capacity" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > const *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = ((std::vector< Magick::CoderInfo > const *)arg1)->capacity();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_unsigned_SS_int  SWIG_NAPI_FROM_CALL_ARGS(static_cast< unsigned int >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_reserve(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  std::vector< Magick::CoderInfo >::size_type arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  unsigned int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_reserve.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_reserve" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);ecode2 = SWIG_AsVal_unsigned_SS_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "std_coderInfoArray_reserve" "', argument " "2"" of type '" "std::vector< Magick::CoderInfo >::size_type""'");
    } 
    arg2 = static_cast< std::vector< Magick::CoderInfo >::size_type >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->reserve(arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_isEmpty(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  bool result;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_isEmpty.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_isEmpty" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > const *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        result = (bool)((std::vector< Magick::CoderInfo > const *)arg1)->empty();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = SWIG_From_bool  SWIG_NAPI_FROM_CALL_ARGS(static_cast< bool >(result));
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_clear(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 0 || static_cast<int>(info.Length()) > 0) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_clear.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_clear" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->clear();
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_add(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  std::vector< Magick::CoderInfo >::value_type *arg2 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_add.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_add" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__CoderInfo,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "std_coderInfoArray_add" "', argument " "2"" of type '" "std::vector< Magick::CoderInfo >::value_type const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "std_coderInfoArray_add" "', argument " "2"" of type '" "std::vector< Magick::CoderInfo >::value_type const &""'"); 
    }
    arg2 = reinterpret_cast< std::vector< Magick::CoderInfo >::value_type * >(argp2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        (arg1)->push_back((std::vector< Magick::CoderInfo >::value_type const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_get(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  int arg2 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  std::vector< Magick::CoderInfo >::value_type *result = 0 ;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_get.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_get" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "std_coderInfoArray_get" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = static_cast< int >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    try {
      {
        try {
          result = (std::vector< Magick::CoderInfo >::value_type *) &std_std_vector_Sl_Magick_CoderInfo_Sg__get(arg1,arg2);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
    } catch(std::out_of_range &_e) {
      SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
    }
    
    jsresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Magick__CoderInfo, 0 |  0 );
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_function
template <typename SWIG_OBJ_WRAP>
Napi::Value _std_coderInfoArray_templ<SWIG_OBJ_WRAP>::_wrap_std_coderInfoArray_set(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  int arg2 ;
  std::vector< Magick::CoderInfo >::value_type *arg3 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  int val2 ;
  int ecode2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_std_coderInfoArray_set.");
    }
    
    res1 = SWIG_ConvertPtr(info.This(), &argp1,SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "std_coderInfoArray_set" "', argument " "1"" of type '" "std::vector< Magick::CoderInfo > *""'"); 
    }
    arg1 = reinterpret_cast< std::vector< Magick::CoderInfo > * >(argp1);ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "std_coderInfoArray_set" "', argument " "2"" of type '" "int""'");
    } 
    arg2 = static_cast< int >(val2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__CoderInfo,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "std_coderInfoArray_set" "', argument " "3"" of type '" "std::vector< Magick::CoderInfo >::value_type const &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "std_coderInfoArray_set" "', argument " "3"" of type '" "std::vector< Magick::CoderInfo >::value_type const &""'"); 
    }
    arg3 = reinterpret_cast< std::vector< Magick::CoderInfo >::value_type * >(argp3);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    try {
      {
        try {
          std_std_vector_Sl_Magick_CoderInfo_Sg__set(arg1,arg2,(Magick::CoderInfo const &)*arg3);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
    } catch(std::out_of_range &_e) {
      SWIG_exception_fail(SWIG_IndexError, (&_e)->what());
    }
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_dtoroverride
template <typename SWIG_OBJ_WRAP>
_std_coderInfoArray_templ<SWIG_OBJ_WRAP>::~_std_coderInfoArray_templ() {
  auto arg1 = reinterpret_cast<std::vector< Magick::CoderInfo > *>(this->self);
  if (this->owned && arg1) {
    delete arg1;
    this->self = SWIG_NULLPTR;
  }
}


// js_global_overloaded_function
Napi::Value _wrap_coderInfoList__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  Magick::CoderInfo::MatchType arg2 ;
  Magick::CoderInfo::MatchType arg3 ;
  Magick::CoderInfo::MatchType arg4 ;
  std::vector< Magick::CoderInfo > temp1 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = new std::vector<Magick::CoderInfo>;
    }
    ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "coderInfoList" "', argument " "2"" of type '" "Magick::CoderInfo::MatchType""'");
    } 
    arg2 = static_cast< Magick::CoderInfo::MatchType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "coderInfoList" "', argument " "3"" of type '" "Magick::CoderInfo::MatchType""'");
    } 
    arg3 = static_cast< Magick::CoderInfo::MatchType >(val3);ecode4 = SWIG_AsVal_int(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "coderInfoList" "', argument " "4"" of type '" "Magick::CoderInfo::MatchType""'");
    } 
    arg4 = static_cast< Magick::CoderInfo::MatchType >(val4);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR coderInfoList< std::vector< Magick::CoderInfo > >(arg1,arg2,arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, SWIG_POINTER_OWN);
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_coderInfoList__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  Magick::CoderInfo::MatchType arg2 ;
  Magick::CoderInfo::MatchType arg3 ;
  std::vector< Magick::CoderInfo > temp1 ;
  int val2 ;
  int ecode2 = 0 ;
  int val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = new std::vector<Magick::CoderInfo>;
    }
    ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "coderInfoList" "', argument " "2"" of type '" "Magick::CoderInfo::MatchType""'");
    } 
    arg2 = static_cast< Magick::CoderInfo::MatchType >(val2);ecode3 = SWIG_AsVal_int(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "coderInfoList" "', argument " "3"" of type '" "Magick::CoderInfo::MatchType""'");
    } 
    arg3 = static_cast< Magick::CoderInfo::MatchType >(val3);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR coderInfoList< std::vector< Magick::CoderInfo > >(arg1,arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, SWIG_POINTER_OWN);
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_coderInfoList__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  Magick::CoderInfo::MatchType arg2 ;
  std::vector< Magick::CoderInfo > temp1 ;
  int val2 ;
  int ecode2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = new std::vector<Magick::CoderInfo>;
    }
    ecode2 = SWIG_AsVal_int(info[0], &val2);
    if (!SWIG_IsOK(ecode2)) {
      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "coderInfoList" "', argument " "2"" of type '" "Magick::CoderInfo::MatchType""'");
    } 
    arg2 = static_cast< Magick::CoderInfo::MatchType >(val2);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR coderInfoList< std::vector< Magick::CoderInfo > >(arg1,arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, SWIG_POINTER_OWN);
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_coderInfoList__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  std::vector< Magick::CoderInfo > *arg1 = (std::vector< Magick::CoderInfo > *) 0 ;
  std::vector< Magick::CoderInfo > temp1 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = new std::vector<Magick::CoderInfo>;
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR coderInfoList< std::vector< Magick::CoderInfo > >(arg1);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t, SWIG_POINTER_OWN);
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_coderInfoList(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_coderInfoList__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_coderInfoList__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_coderInfoList__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_coderInfoList__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_coderInfoList__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_coderInfoList__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 0 && static_cast<int>(info.Length()) <= 0) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_coderInfoList__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_coderInfoList__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function coderInfoList.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_appendImagesAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_appendImagesAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ImageListIterator arg2 ;
    ImageListIterator arg3 ;
    bool arg4 ;
    ImageListContainer temp_list2 ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_appendImagesAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR appendImages< ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3),arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = new Magick::Image();
      }
      {
        {
          if (info[0].IsArray()) {
            Napi::Array array = info[0].As<Napi::Array>();
            for (size_t i = 0; i < array.Length(); i++) {
              Magick::Image *im = nullptr;
              if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
                SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', array element is not an Image");
              }
              // Emplace the newly constructed copies in the std::container
              temp_list2.emplace_back(Magick::Image(*im));
            }
            arg2 = temp_list2.begin();
            arg3 = temp_list2.end();
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', argument 2 is not an array");
          }
        }
      }
      ecode4 = SWIG_AsVal_bool(info[1], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "appendImages" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_appendImagesAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_appendImagesAsync__SWIG_0.");
  }
  context = new _std_coderInfoArray__wrap_appendImagesAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_appendImagesAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_appendImages__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  bool arg4 ;
  ImageListContainer temp_list2 ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = new Magick::Image();
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', argument 2 is not an array");
        }
      }
    }
    ecode4 = SWIG_AsVal_bool(info[1], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "appendImages" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR appendImages< ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3),arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_appendImagesAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_appendImagesAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    Magick::Image *arg1 = (Magick::Image *) 0 ;
    ImageListIterator arg2 ;
    ImageListIterator arg3 ;
    ImageListContainer temp_list2 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_appendImagesAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR appendImages< ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3));
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = new Magick::Image();
      }
      {
        {
          if (info[0].IsArray()) {
            Napi::Array array = info[0].As<Napi::Array>();
            for (size_t i = 0; i < array.Length(); i++) {
              Magick::Image *im = nullptr;
              if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
                SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', array element is not an Image");
              }
              // Emplace the newly constructed copies in the std::container
              temp_list2.emplace_back(Magick::Image(*im));
            }
            arg2 = temp_list2.begin();
            arg3 = temp_list2.end();
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', argument 2 is not an array");
          }
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_appendImagesAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_appendImagesAsync__SWIG_1.");
  }
  context = new _std_coderInfoArray__wrap_appendImagesAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_appendImagesAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_appendImagesAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_appendImagesAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_appendImagesAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_appendImagesAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_appendImagesAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function appendImagesAsync.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_appendImages__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  ImageListContainer temp_list2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = new Magick::Image();
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'appendImages', argument 2 is not an array");
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR appendImages< ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3));
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_appendImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_appendImages__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_appendImages__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_appendImages__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_appendImages__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function appendImages.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_averageImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  ImageListContainer temp_list2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_averageImages.");
    }
    
    {
      arg1 = new Magick::Image();
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'averageImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'averageImages', argument 2 is not an array");
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR averageImages< ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3));
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_flattenImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  ImageListContainer temp_list2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_flattenImages.");
    }
    
    res1 = SWIG_ConvertPtr(info[0], &argp1,SWIGTYPE_p_Magick__Image, 0 |  0 );
    if (!SWIG_IsOK(res1)) {
      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "flattenImages" "', argument " "1"" of type '" "Magick::Image *""'"); 
    }
    arg1 = reinterpret_cast< Magick::Image * >(argp1);{
      {
        if (info[1].IsArray()) {
          Napi::Array array = info[1].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'flattenImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'flattenImages', argument 2 is not an array");
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR flattenImages< ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3));
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_mosaicImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  Magick::Image *arg1 = (Magick::Image *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  ImageListContainer temp_list2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_mosaicImages.");
    }
    
    {
      arg1 = new Magick::Image();
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'mosaicImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'mosaicImages', argument 2 is not an array");
        }
      }
    }
    
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR mosaicImages< ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3));
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        jsresult = SWIG_NAPI_NewPointerObj(env, arg1, SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_coalesceImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  ImageListContainer temp_list1 ;
  ImageListContainer temp_list2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_coalesceImages.");
    }
    
    {
      arg1 = &temp_list1;
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'coalesceImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'coalesceImages', argument 2 is not an array");
        }
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR coalesceImages< ImageListIterator,ImageListContainer >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3));
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_deconstructImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  ImageListContainer temp_list1 ;
  ImageListContainer temp_list2 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_deconstructImages.");
    }
    
    {
      arg1 = &temp_list1;
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'deconstructImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'deconstructImages', argument 2 is not an array");
        }
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR deconstructImages< ImageListIterator,ImageListContainer >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3));
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_forwardFourierTransformImageAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListContainer *arg1 = (ImageListContainer *) 0 ;
    Magick::Image *arg2 = 0 ;
    ImageListContainer temp_list1 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR forwardFourierTransformImage< ImageListContainer >(arg1,(Magick::Image const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          Napi::Array array = Napi::Array::New(env, arg1->size());
          size_t i = 0;
          // Iterate over the std::Container using standard C++ semantics
          for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
            Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
            array.Set(i, element);
          }
          jsresult = array;
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = &temp_list1;
      }
      res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_forwardFourierTransformImageAsync__SWIG_0.");
  }
  context = new _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_forwardFourierTransformImageAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_forwardFourierTransformImage__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  Magick::Image *arg2 = 0 ;
  ImageListContainer temp_list1 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = &temp_list1;
    }
    res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR forwardFourierTransformImage< ImageListContainer >(arg1,(Magick::Image const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_forwardFourierTransformImageAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListContainer *arg1 = (ImageListContainer *) 0 ;
    Magick::Image *arg2 = 0 ;
    bool arg3 ;
    ImageListContainer temp_list1 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    bool val3 ;
    int ecode3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR forwardFourierTransformImage< ImageListContainer >(arg1,(Magick::Image const &)*arg2,arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          Napi::Array array = Napi::Array::New(env, arg1->size());
          size_t i = 0;
          // Iterate over the std::Container using standard C++ semantics
          for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
            Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
            array.Set(i, element);
          }
          jsresult = array;
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = &temp_list1;
      }
      res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
      if (!SWIG_IsOK(ecode3)) {
        SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "forwardFourierTransformImage" "', argument " "3"" of type '" "bool""'");
      } 
      arg3 = static_cast< bool >(val3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_forwardFourierTransformImageAsync__SWIG_1.");
  }
  context = new _std_coderInfoArray__wrap_forwardFourierTransformImageAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_forwardFourierTransformImageAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_forwardFourierTransformImageAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_forwardFourierTransformImageAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_forwardFourierTransformImageAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_forwardFourierTransformImageAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_forwardFourierTransformImageAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function forwardFourierTransformImageAsync.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_forwardFourierTransformImage__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  Magick::Image *arg2 = 0 ;
  bool arg3 ;
  ImageListContainer temp_list1 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  bool val3 ;
  int ecode3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = &temp_list1;
    }
    res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Image,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "forwardFourierTransformImage" "', argument " "2"" of type '" "Magick::Image const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Image * >(argp2);ecode3 = SWIG_AsVal_bool(info[1], &val3);
    if (!SWIG_IsOK(ecode3)) {
      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "forwardFourierTransformImage" "', argument " "3"" of type '" "bool""'");
    } 
    arg3 = static_cast< bool >(val3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR forwardFourierTransformImage< ImageListContainer >(arg1,(Magick::Image const &)*arg2,arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_forwardFourierTransformImage(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_forwardFourierTransformImage__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_forwardFourierTransformImage__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_forwardFourierTransformImage__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_forwardFourierTransformImage__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function forwardFourierTransformImage.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_montageImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  Magick::Montage *arg4 = 0 ;
  ImageListContainer temp_list1 ;
  ImageListContainer temp_list2 ;
  void *argp4 = 0 ;
  int res4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_montageImages.");
    }
    
    {
      arg1 = &temp_list1;
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'montageImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'montageImages', argument 2 is not an array");
        }
      }
    }
    res4 = SWIG_ConvertPtr(info[1], &argp4, SWIGTYPE_p_Magick__Montage,  0 );
    if (!SWIG_IsOK(res4)) {
      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "montageImages" "', argument " "4"" of type '" "Magick::Montage const &""'"); 
    }
    if (!argp4) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "montageImages" "', argument " "4"" of type '" "Magick::Montage const &""'"); 
    }
    arg4 = reinterpret_cast< Magick::Montage * >(argp4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR montageImages< ImageListContainer,ImageListIterator >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3),(Magick::Montage const &)*arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function
Napi::Value _wrap_morphImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  ImageListIterator arg2 ;
  ImageListIterator arg3 ;
  size_t arg4 ;
  ImageListContainer temp_list1 ;
  ImageListContainer temp_list2 ;
  unsigned int val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
      SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_morphImages.");
    }
    
    {
      arg1 = &temp_list1;
    }
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'morphImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list2.emplace_back(Magick::Image(*im));
          }
          arg2 = temp_list2.begin();
          arg3 = temp_list2.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'morphImages', argument 2 is not an array");
        }
      }
    }
    ecode4 = SWIG_AsVal_unsigned_SS_int(info[1], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "morphImages" "', argument " "4"" of type '" "size_t""'");
    } 
    arg4 = static_cast< size_t >(val4);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR morphImages< ImageListIterator,ImageListContainer >(arg1,SWIG_STD_MOVE(arg2),SWIG_STD_MOVE(arg3),SWIG_STD_MOVE(arg4));
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_readImagesAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_readImagesAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListContainer *arg1 = (ImageListContainer *) 0 ;
    std::string *arg2 = 0 ;
    Magick::ReadOptions *arg3 = 0 ;
    ImageListContainer temp_list1 ;
    int res2 = SWIG_OLDOBJ ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_readImagesAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(std::string const &)*arg2,*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          Napi::Array array = Napi::Array::New(env, arg1->size());
          size_t i = 0;
          // Iterate over the std::Container using standard C++ semantics
          for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
            Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
            array.Set(i, element);
          }
          jsresult = array;
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = &temp_list1;
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__ReadOptions,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
      }
      arg3 = reinterpret_cast< Magick::ReadOptions * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_readImagesAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_readImagesAsync__SWIG_0.");
  }
  context = new _std_coderInfoArray__wrap_readImagesAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_readImagesAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_readImages__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  std::string *arg2 = 0 ;
  Magick::ReadOptions *arg3 = 0 ;
  ImageListContainer temp_list1 ;
  int res2 = SWIG_OLDOBJ ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = &temp_list1;
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__ReadOptions,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
    }
    arg3 = reinterpret_cast< Magick::ReadOptions * >(argp3);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(std::string const &)*arg2,*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_readImagesAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_readImagesAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListContainer *arg1 = (ImageListContainer *) 0 ;
    std::string *arg2 = 0 ;
    ImageListContainer temp_list1 ;
    int res2 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_readImagesAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(std::string const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          Napi::Array array = Napi::Array::New(env, arg1->size());
          size_t i = 0;
          // Iterate over the std::Container using standard C++ semantics
          for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
            Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
            array.Set(i, element);
          }
          jsresult = array;
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res2)) delete arg2;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = &temp_list1;
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res2 = SWIG_AsPtr_std_string(info[0], &ptr);
          if (!SWIG_IsOK(res2)) {
            SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
          }
          arg2 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_readImagesAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_readImagesAsync__SWIG_1.");
  }
  context = new _std_coderInfoArray__wrap_readImagesAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_readImagesAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_readImages__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  std::string *arg2 = 0 ;
  ImageListContainer temp_list1 ;
  int res2 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = &temp_list1;
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res2 = SWIG_AsPtr_std_string(info[0], &ptr);
        if (!SWIG_IsOK(res2)) {
          SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "std::string const &""'"); 
        }
        arg2 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(std::string const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res2)) delete arg2;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res2)) delete arg2;
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_readImagesAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_readImagesAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListContainer *arg1 = (ImageListContainer *) 0 ;
    Magick::Blob *arg2 = 0 ;
    Magick::ReadOptions *arg3 = 0 ;
    ImageListContainer temp_list1 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_readImagesAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(Magick::Blob const &)*arg2,*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          Napi::Array array = Napi::Array::New(env, arg1->size());
          size_t i = 0;
          // Iterate over the std::Container using standard C++ semantics
          for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
            Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
            array.Set(i, element);
          }
          jsresult = array;
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = &temp_list1;
      }
      res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__ReadOptions,  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
      }
      if (!argp3) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
      }
      arg3 = reinterpret_cast< Magick::ReadOptions * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_readImagesAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_readImagesAsync__SWIG_2.");
  }
  context = new _std_coderInfoArray__wrap_readImagesAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_readImagesAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_readImages__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  Magick::Blob *arg2 = 0 ;
  Magick::ReadOptions *arg3 = 0 ;
  ImageListContainer temp_list1 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = &temp_list1;
    }
    res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);res3 = SWIG_ConvertPtr(info[1], &argp3, SWIGTYPE_p_Magick__ReadOptions,  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
    }
    if (!argp3) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "3"" of type '" "Magick::ReadOptions &""'"); 
    }
    arg3 = reinterpret_cast< Magick::ReadOptions * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(Magick::Blob const &)*arg2,*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_readImagesAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_readImagesAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListContainer *arg1 = (ImageListContainer *) 0 ;
    Magick::Blob *arg2 = 0 ;
    ImageListContainer temp_list1 ;
    void *argp2 = 0 ;
    int res2 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_readImagesAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(Magick::Blob const &)*arg2);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      {
        if (arg1 != nullptr) {
          Napi::Array array = Napi::Array::New(env, arg1->size());
          size_t i = 0;
          // Iterate over the std::Container using standard C++ semantics
          for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
            Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
            array.Set(i, element);
          }
          jsresult = array;
        } else {
          jsresult = env.Null();
        }
      }
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        arg1 = &temp_list1;
      }
      res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
      if (!SWIG_IsOK(res2)) {
        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      if (!argp2) {
        SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
      }
      arg2 = reinterpret_cast< Magick::Blob * >(argp2);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[0].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[0].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_readImagesAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 1 || static_cast<int>(info.Length()) > 1) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_readImagesAsync__SWIG_3.");
  }
  context = new _std_coderInfoArray__wrap_readImagesAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_readImagesAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_readImagesAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImagesAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImagesAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImagesAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImagesAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImagesAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImagesAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImagesAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImagesAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function readImagesAsync.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_readImages__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListContainer *arg1 = (ImageListContainer *) 0 ;
  Magick::Blob *arg2 = 0 ;
  ImageListContainer temp_list1 ;
  void *argp2 = 0 ;
  int res2 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      arg1 = &temp_list1;
    }
    res2 = SWIG_ConvertPtr(info[0], &argp2, SWIGTYPE_p_Magick__Blob,  0 );
    if (!SWIG_IsOK(res2)) {
      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    if (!argp2) {
      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "readImages" "', argument " "2"" of type '" "Magick::Blob const &""'"); 
    }
    arg2 = reinterpret_cast< Magick::Blob * >(argp2);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[0].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[0].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR readImages< ImageListContainer >(arg1,(Magick::Blob const &)*arg2);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    {
      if (arg1 != nullptr) {
        Napi::Array array = Napi::Array::New(env, arg1->size());
        size_t i = 0;
        // Iterate over the std::Container using standard C++ semantics
        for (auto it = arg1->begin(); it != arg1->end(); it++, i++) {
          Napi::Value element = SWIG_NAPI_NewPointerObj(env, new Magick::Image(*it), SWIGTYPE_p_Magick__Image, SWIG_POINTER_OWN);
          array.Set(i, element);
        }
        jsresult = array;
      } else {
        jsresult = env.Null();
      }
    }
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_readImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImages__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImages__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImages__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImages__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImages__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImages__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 1 && static_cast<int>(info.Length()) <= 1) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_readImages__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_readImages__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function readImages.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_writeImagesAsync__SWIG_0(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_writeImagesAsync__SWIG_0_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListIterator arg1 ;
    ImageListIterator arg2 ;
    std::string *arg3 = 0 ;
    bool arg4 ;
    ImageListContainer temp_list1 ;
    int res3 = SWIG_OLDOBJ ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_writeImagesAsync__SWIG_0_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),(std::string const &)*arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        {
          if (info[0].IsArray()) {
            Napi::Array array = info[0].As<Napi::Array>();
            for (size_t i = 0; i < array.Length(); i++) {
              Magick::Image *im = nullptr;
              if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
                SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
              }
              // Emplace the newly constructed copies in the std::container
              temp_list1.emplace_back(Magick::Image(*im));
            }
            arg1 = temp_list1.begin();
            arg2 = temp_list1.end();
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
          }
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "writeImages" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_writeImagesAsync__SWIG_0_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_writeImagesAsync__SWIG_0.");
  }
  context = new _std_coderInfoArray__wrap_writeImagesAsync__SWIG_0_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_writeImagesAsync__SWIG_0_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_writeImages__SWIG_0(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListIterator arg1 ;
  ImageListIterator arg2 ;
  std::string *arg3 = 0 ;
  bool arg4 ;
  ImageListContainer temp_list1 ;
  int res3 = SWIG_OLDOBJ ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list1.emplace_back(Magick::Image(*im));
          }
          arg1 = temp_list1.begin();
          arg2 = temp_list1.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
        }
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "writeImages" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),(std::string const &)*arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_writeImagesAsync__SWIG_1(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_writeImagesAsync__SWIG_1_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListIterator arg1 ;
    ImageListIterator arg2 ;
    std::string *arg3 = 0 ;
    ImageListContainer temp_list1 ;
    int res3 = SWIG_OLDOBJ ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_writeImagesAsync__SWIG_1_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),(std::string const &)*arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      if (SWIG_IsNewObj(res3)) delete arg3;
      
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        {
          if (info[0].IsArray()) {
            Napi::Array array = info[0].As<Napi::Array>();
            for (size_t i = 0; i < array.Length(); i++) {
              Magick::Image *im = nullptr;
              if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
                SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
              }
              // Emplace the newly constructed copies in the std::container
              temp_list1.emplace_back(Magick::Image(*im));
            }
            arg1 = temp_list1.begin();
            arg2 = temp_list1.end();
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
          }
        }
      }
      {
        {
          std::string *ptr = (std::string *)0;
          res3 = SWIG_AsPtr_std_string(info[1], &ptr);
          if (!SWIG_IsOK(res3)) {
            SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          if (!ptr) {
            SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
          }
          arg3 = ptr;
        }
      }
      
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_writeImagesAsync__SWIG_1_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_writeImagesAsync__SWIG_1.");
  }
  context = new _std_coderInfoArray__wrap_writeImagesAsync__SWIG_1_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_writeImagesAsync__SWIG_1_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_writeImages__SWIG_1(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListIterator arg1 ;
  ImageListIterator arg2 ;
  std::string *arg3 = 0 ;
  ImageListContainer temp_list1 ;
  int res3 = SWIG_OLDOBJ ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list1.emplace_back(Magick::Image(*im));
          }
          arg1 = temp_list1.begin();
          arg2 = temp_list1.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
        }
      }
    }
    {
      {
        std::string *ptr = (std::string *)0;
        res3 = SWIG_AsPtr_std_string(info[1], &ptr);
        if (!SWIG_IsOK(res3)) {
          SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        if (!ptr) {
          SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "writeImages" "', argument " "3"" of type '" "std::string const &""'"); 
        }
        arg3 = ptr;
      }
    }
    
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),(std::string const &)*arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    if (SWIG_IsNewObj(res3)) delete arg3;
    
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  if (SWIG_IsNewObj(res3)) delete arg3;
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_writeImagesAsync__SWIG_2(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_writeImagesAsync__SWIG_2_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListIterator arg1 ;
    ImageListIterator arg2 ;
    Magick::Blob *arg3 = (Magick::Blob *) 0 ;
    bool arg4 ;
    ImageListContainer temp_list1 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    bool val4 ;
    int ecode4 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_writeImagesAsync__SWIG_2_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),arg3,arg4);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        {
          if (info[0].IsArray()) {
            Napi::Array array = info[0].As<Napi::Array>();
            for (size_t i = 0; i < array.Length(); i++) {
              Magick::Image *im = nullptr;
              if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
                SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
              }
              // Emplace the newly constructed copies in the std::container
              temp_list1.emplace_back(Magick::Image(*im));
            }
            arg1 = temp_list1.begin();
            arg2 = temp_list1.end();
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
          }
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "Magick::Blob *""'"); 
      }
      arg3 = reinterpret_cast< Magick::Blob * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
      if (!SWIG_IsOK(ecode4)) {
        SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "writeImages" "', argument " "4"" of type '" "bool""'");
      } 
      arg4 = static_cast< bool >(val4);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_writeImagesAsync__SWIG_2_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 3 || static_cast<int>(info.Length()) > 3) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_writeImagesAsync__SWIG_2.");
  }
  context = new _std_coderInfoArray__wrap_writeImagesAsync__SWIG_2_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_writeImagesAsync__SWIG_2_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_writeImages__SWIG_2(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListIterator arg1 ;
  ImageListIterator arg2 ;
  Magick::Blob *arg3 = (Magick::Blob *) 0 ;
  bool arg4 ;
  ImageListContainer temp_list1 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  bool val4 ;
  int ecode4 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list1.emplace_back(Magick::Image(*im));
          }
          arg1 = temp_list1.begin();
          arg2 = temp_list1.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
        }
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "Magick::Blob *""'"); 
    }
    arg3 = reinterpret_cast< Magick::Blob * >(argp3);ecode4 = SWIG_AsVal_bool(info[2], &val4);
    if (!SWIG_IsOK(ecode4)) {
      SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "writeImages" "', argument " "4"" of type '" "bool""'");
    } 
    arg4 = static_cast< bool >(val4);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),arg3,arg4);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_overloaded_function_async
Napi::Value _wrap_writeImagesAsync__SWIG_3(const Napi::CallbackInfo &info) {
  // js_async_worker_local_class
  class _std_coderInfoArray__wrap_writeImagesAsync__SWIG_3_Tasklet : public SWIG_NAPI_AsyncContext {
    Napi::Env env;
    ImageListIterator arg1 ;
    ImageListIterator arg2 ;
    Magick::Blob *arg3 = (Magick::Blob *) 0 ;
    ImageListContainer temp_list1 ;
    void *argp3 = 0 ;
    int res3 = 0 ;
    
    // js_locks_list
    SWIG_Locks_List SWIG_locks;
    
  public:
    _std_coderInfoArray__wrap_writeImagesAsync__SWIG_3_Tasklet(Napi::Env _env)
    :SWIG_NAPI_AsyncContext(_env), env(_env) {
      
    }
    
    virtual void SWIG_NAPI_Execute() override {
      // This runs the action code in a worker thread and V8 is not accessible
      Napi::Env env(SWIG_NULLPTR);
      
      // js_guard
      SWIG_Guard SWIG_guard(SWIG_locks);
      
      
      // js_lock
      SWIG_guard.lock();
      
      
      Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),arg3);
      
      goto fail;
    fail:
      return;
    }
    
#ifdef NAPI_CPP_EXCEPTIONS
    virtual void SWIG_NAPI_Rethrow(const std::exception_ptr &saved) override {
      // Back in the main thread with V8 access, caller has HandleScope
      
      {
        try {
          if (saved) std::rethrow_exception(saved);
        } catch (const Magick::Exception &e) {
          do {
            SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
          } while (0);
          SWIG_fail;
        }
      }
      
      
    }
#endif
    
    virtual void SWIG_NAPI_Resolve() override {
      // Back in the main thread with V8 access, caller has HandleScope
      Napi::Value jsresult;
      jsresult = env.Undefined();
      
      if (!SWIG_NAPI_Cleanup()) goto fail;
      SWIG_NAPI_deferred_finalized = true;
      SWIG_NAPI_deferred.Resolve(jsresult);
      goto fail;
    fail:
      return;
    }
    
    virtual bool SWIG_NAPI_Cleanup() override {
      return true;
      goto fail;
    fail:
      return false;
    }
    
    virtual Status SWIG_NAPI_Init(const Napi::CallbackInfo &info) override {
      {
        {
          if (info[0].IsArray()) {
            Napi::Array array = info[0].As<Napi::Array>();
            for (size_t i = 0; i < array.Length(); i++) {
              Magick::Image *im = nullptr;
              if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
                SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
              }
              // Emplace the newly constructed copies in the std::container
              temp_list1.emplace_back(Magick::Image(*im));
            }
            arg1 = temp_list1.begin();
            arg2 = temp_list1.end();
          } else {
            SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
          }
        }
      }
      res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__Blob, 0 |  0 );
      if (!SWIG_IsOK(res3)) {
        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "Magick::Blob *""'"); 
      }
      arg3 = reinterpret_cast< Magick::Blob * >(argp3);
#define SWIG_NAPI_Raise SWIG_NAPI_Reject
      {
        SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
        if (info[1].IsObject()) {
          Napi::Object obj;
          NAPI_CHECK_RESULT(info[1].ToObject(), obj);
          if (SWIG_NAPI_IsWrappedObject(env, obj)) {
            ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
            if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
              SWIG_locks.insert({
                reinterpret_cast<void*>(ow), {
                  [ow](){
                    ow->lock();
                  }, [ow](){
                    ow->unlock();
                  }
                  }
              });
            }
          }
        }
      }
      
#undef SWIG_NAPI_Raise
      return Status::OK;
      goto fail;
    fail:
      return Status::THROW;
    }
  };
  
  Napi::Env env = info.Env();
  _std_coderInfoArray__wrap_writeImagesAsync__SWIG_3_Tasklet *context = SWIG_NULLPTR;
  SWIG_NAPI_AsyncWorker *worker = SWIG_NULLPTR;
  if(static_cast<int>(info.Length()) < 2 || static_cast<int>(info.Length()) > 2) {
    SWIG_Error(SWIG_ERROR, "Illegal number of arguments for _wrap_writeImagesAsync__SWIG_3.");
  }
  context = new _std_coderInfoArray__wrap_writeImagesAsync__SWIG_3_Tasklet(env);
  worker = new SWIG_NAPI_AsyncWorker(
    env, "SWIG__wrap_writeImagesAsync__SWIG_3_Async_Worker", context);
  return worker->Run(info);
#ifdef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_writeImagesAsync(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImagesAsync__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImagesAsync__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImagesAsync__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImagesAsync__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImagesAsync__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImagesAsync__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImagesAsync__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImagesAsync__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function writeImagesAsync.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


// js_global_overloaded_function
Napi::Value _wrap_writeImages__SWIG_3(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  ImageListIterator arg1 ;
  ImageListIterator arg2 ;
  Magick::Blob *arg3 = (Magick::Blob *) 0 ;
  ImageListContainer temp_list1 ;
  void *argp3 = 0 ;
  int res3 = 0 ;
  
  // js_locks_list
  SWIG_Locks_List SWIG_locks;
  
#ifdef NAPI_CPP_EXCEPTIONS
  try {
#endif
    
    // js_guard
    SWIG_Guard SWIG_guard(SWIG_locks);
    
    {
      {
        if (info[0].IsArray()) {
          Napi::Array array = info[0].As<Napi::Array>();
          for (size_t i = 0; i < array.Length(); i++) {
            Magick::Image *im = nullptr;
            if (!SWIG_IsOK(SWIG_NAPI_ConvertPtr(array.Get(i), reinterpret_cast<void **>(&im), SWIGTYPE_p_Magick__Image, 0)) || im == nullptr) {
              SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', array element is not an Image");
            }
            // Emplace the newly constructed copies in the std::container
            temp_list1.emplace_back(Magick::Image(*im));
          }
          arg1 = temp_list1.begin();
          arg2 = temp_list1.end();
        } else {
          SWIG_exception_fail(SWIG_TypeError, "in method 'writeImages', argument 1 is not an array");
        }
      }
    }
    res3 = SWIG_ConvertPtr(info[1], &argp3,SWIGTYPE_p_Magick__Blob, 0 |  0 );
    if (!SWIG_IsOK(res3)) {
      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "writeImages" "', argument " "3"" of type '" "Magick::Blob *""'"); 
    }
    arg3 = reinterpret_cast< Magick::Blob * >(argp3);
    {
      SWIG_NAPI_ObjectWrap_inst *ow = SWIG_NULLPTR;
      if (info[1].IsObject()) {
        Napi::Object obj;
        NAPI_CHECK_RESULT(info[1].ToObject(), obj);
        if (SWIG_NAPI_IsWrappedObject(env, obj)) {
          ow = Napi::ObjectWrap<SWIG_NAPI_ObjectWrap_inst>::Unwrap(obj);
          if (ow != SWIG_NULLPTR && SWIG_locks.count(ow) == 0) {
            SWIG_locks.insert({
              reinterpret_cast<void*>(ow), {
                [ow](){
                  ow->lock();
                }, [ow](){
                  ow->unlock();
                }
                }
            });
          }
        }
      }
    }
    
    
    // js_lock
    SWIG_guard.lock();
    
    
    
    {
      try {
        Magick::SWIGTEMPLATEDISAMBIGUATOR writeImages< ImageListIterator >(SWIG_STD_MOVE(arg1),SWIG_STD_MOVE(arg2),arg3);
      } catch (const Magick::Exception &e) {
        do {
          SWIG_NAPI_Raise(env, e.what()); SWIG_fail; 
        } while (0);
        SWIG_fail;
      }
    }
    
    
    
    jsresult = env.Undefined();
    
    
    return jsresult;
#ifdef NAPI_CPP_EXCEPTIONS
  } catch (...) {
    std::rethrow_exception(std::current_exception());
  }
#else
  goto fail;
fail:
  
#endif
  return Napi::Value();
}


// js_global_function_dispatcher
Napi::Value _wrap_Magick__wrap_writeImages(const Napi::CallbackInfo &info) {
  Napi::Env env = info.Env();
  Napi::Value jsresult;
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImages__SWIG_0(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImages__SWIG_0(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImages__SWIG_1(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImages__SWIG_1(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 3 && static_cast<int>(info.Length()) <= 3) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImages__SWIG_2(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImages__SWIG_2(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  // js_function_dispatch_case
  if(static_cast<int>(info.Length()) >= 2 && static_cast<int>(info.Length()) <= 2) {
#ifdef NAPI_CPP_EXCEPTIONS
    bool tryNext = false;
    try {
      jsresult = _wrap_writeImages__SWIG_3(info);
    } catch (const Napi::TypeError &) {
      tryNext = true;
    } catch (const Napi::Error &e) {
      throw e;
    }
    if (!tryNext)
    return jsresult;
#else
    _wrap_writeImages__SWIG_3(info);
    if (env.IsExceptionPending()) {
      Napi::Error e = env.GetAndClearPendingException();
      Napi::Value typeErrorValue;
      bool isTypeError;
      Napi::Function typeErrorCons;
      // Yes, this is ugly
      // TODO: Fix this in Node.js when the core team grows up
      NAPI_CHECK_RESULT(env.Global().Get("TypeError"), typeErrorValue);
      typeErrorCons = typeErrorValue.As<Napi::Function>();
      NAPI_CHECK_RESULT(e.Value().InstanceOf(typeErrorCons), isTypeError);
      if (!isTypeError) {
        // This is not the error you are looking for
        e.ThrowAsJavaScriptException();
        SWIG_fail;
      }
    } else {
      return jsresult;
    }
#endif
  }
  
  
  SWIG_Error(SWIG_ERROR, "Illegal arguments for function writeImages.");
  
#ifndef NAPI_CPP_EXCEPTIONS
  goto fail;
fail:
#endif
  return Napi::Value();
}


/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */

static void *_p_Magick__ColorCMYKTo_p_Magick__Color(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Color *)  ((Magick::ColorCMYK *) x));
}
static void *_p_Magick__ColorGrayTo_p_Magick__Color(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Color *)  ((Magick::ColorGray *) x));
}
static void *_p_Magick__ColorHSLTo_p_Magick__Color(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Color *)  ((Magick::ColorHSL *) x));
}
static void *_p_Magick__ColorMonoTo_p_Magick__Color(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Color *)  ((Magick::ColorMono *) x));
}
static void *_p_Magick__ColorRGBTo_p_Magick__Color(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Color *)  ((Magick::ColorRGB *) x));
}
static void *_p_Magick__ColorYUVTo_p_Magick__Color(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Color *)  ((Magick::ColorYUV *) x));
}
static void *_p_Magick__DrawableAffineTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableAffine *) x));
}
static void *_p_Magick__DrawableAlphaTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableAlpha *) x));
}
static void *_p_Magick__DrawableArcTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableArc *) x));
}
static void *_p_Magick__DrawableBezierTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableBezier *) x));
}
static void *_p_Magick__DrawableBorderColorTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableBorderColor *) x));
}
static void *_p_Magick__DrawableCircleTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableCircle *) x));
}
static void *_p_Magick__DrawableClipPathTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableClipPath *) x));
}
static void *_p_Magick__DrawableClipRuleTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableClipRule *) x));
}
static void *_p_Magick__DrawableClipUnitsTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableClipUnits *) x));
}
static void *_p_Magick__DrawableColorTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableColor *) x));
}
static void *_p_Magick__DrawableCompositeImageTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableCompositeImage *) x));
}
static void *_p_Magick__DrawableDensityTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableDensity *) x));
}
static void *_p_Magick__DrawableEllipseTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableEllipse *) x));
}
static void *_p_Magick__DrawableFillColorTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableFillColor *) x));
}
static void *_p_Magick__DrawableFillOpacityTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableFillOpacity *) x));
}
static void *_p_Magick__DrawableFillPatternUrlTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableFillPatternUrl *) x));
}
static void *_p_Magick__DrawableFillRuleTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableFillRule *) x));
}
static void *_p_Magick__DrawableFontTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableFont *) x));
}
static void *_p_Magick__DrawableGravityTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableGravity *) x));
}
static void *_p_Magick__DrawableLineTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableLine *) x));
}
static void *_p_Magick__DrawableMiterLimitTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableMiterLimit *) x));
}
static void *_p_Magick__DrawablePathTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePath *) x));
}
static void *_p_Magick__DrawablePointTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePoint *) x));
}
static void *_p_Magick__DrawablePointSizeTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePointSize *) x));
}
static void *_p_Magick__DrawablePolygonTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePolygon *) x));
}
static void *_p_Magick__DrawablePolylineTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePolyline *) x));
}
static void *_p_Magick__DrawablePopClipPathTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePopClipPath *) x));
}
static void *_p_Magick__DrawablePopGraphicContextTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePopGraphicContext *) x));
}
static void *_p_Magick__DrawablePopPatternTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePopPattern *) x));
}
static void *_p_Magick__DrawablePushClipPathTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePushClipPath *) x));
}
static void *_p_Magick__DrawablePushGraphicContextTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePushGraphicContext *) x));
}
static void *_p_Magick__DrawablePushPatternTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawablePushPattern *) x));
}
static void *_p_Magick__DrawableRectangleTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableRectangle *) x));
}
static void *_p_Magick__DrawableRotationTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableRotation *) x));
}
static void *_p_Magick__DrawableRoundRectangleTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableRoundRectangle *) x));
}
static void *_p_Magick__DrawableScalingTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableScaling *) x));
}
static void *_p_Magick__DrawableSkewXTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableSkewX *) x));
}
static void *_p_Magick__DrawableSkewYTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableSkewY *) x));
}
static void *_p_Magick__DrawableStrokeAntialiasTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeAntialias *) x));
}
static void *_p_Magick__DrawableStrokeColorTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeColor *) x));
}
static void *_p_Magick__DrawableStrokeDashArrayTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeDashArray *) x));
}
static void *_p_Magick__DrawableStrokeDashOffsetTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeDashOffset *) x));
}
static void *_p_Magick__DrawableStrokeLineCapTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeLineCap *) x));
}
static void *_p_Magick__DrawableStrokeLineJoinTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeLineJoin *) x));
}
static void *_p_Magick__DrawableStrokeOpacityTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeOpacity *) x));
}
static void *_p_Magick__DrawableStrokePatternUrlTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokePatternUrl *) x));
}
static void *_p_Magick__DrawableStrokeWidthTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableStrokeWidth *) x));
}
static void *_p_Magick__DrawableTextTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableText *) x));
}
static void *_p_Magick__DrawableTextAlignmentTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextAlignment *) x));
}
static void *_p_Magick__DrawableTextAntialiasTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextAntialias *) x));
}
static void *_p_Magick__DrawableTextDecorationTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextDecoration *) x));
}
static void *_p_Magick__DrawableTextDirectionTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextDirection *) x));
}
static void *_p_Magick__DrawableTextInterlineSpacingTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextInterlineSpacing *) x));
}
static void *_p_Magick__DrawableTextInterwordSpacingTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextInterwordSpacing *) x));
}
static void *_p_Magick__DrawableTextKerningTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextKerning *) x));
}
static void *_p_Magick__DrawableTextUnderColorTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTextUnderColor *) x));
}
static void *_p_Magick__DrawableTranslationTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableTranslation *) x));
}
static void *_p_Magick__DrawableViewboxTo_p_Magick__DrawableBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::DrawableBase *)  ((Magick::DrawableViewbox *) x));
}
static void *_p_Magick__ErrorBlobTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorBlob *) x));
}
static void *_p_Magick__ErrorCacheTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorCache *) x));
}
static void *_p_Magick__ErrorCoderTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorCoder *) x));
}
static void *_p_Magick__ErrorConfigureTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorConfigure *) x));
}
static void *_p_Magick__ErrorCorruptImageTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorCorruptImage *) x));
}
static void *_p_Magick__ErrorDelegateTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorDelegate *) x));
}
static void *_p_Magick__ErrorDrawTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorDraw *) x));
}
static void *_p_Magick__ErrorFileOpenTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorFileOpen *) x));
}
static void *_p_Magick__ErrorImageTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorImage *) x));
}
static void *_p_Magick__ErrorMissingDelegateTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorMissingDelegate *) x));
}
static void *_p_Magick__ErrorModuleTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorModule *) x));
}
static void *_p_Magick__ErrorMonitorTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorMonitor *) x));
}
static void *_p_Magick__ErrorOptionTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorOption *) x));
}
static void *_p_Magick__ErrorPolicyTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorPolicy *) x));
}
static void *_p_Magick__ErrorRegistryTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorRegistry *) x));
}
static void *_p_Magick__ErrorResourceLimitTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorResourceLimit *) x));
}
static void *_p_Magick__ErrorStreamTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorStream *) x));
}
static void *_p_Magick__ErrorTypeTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorType *) x));
}
static void *_p_Magick__ErrorUndefinedTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorUndefined *) x));
}
static void *_p_Magick__ErrorXServerTo_p_Magick__Error(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Error *)  ((Magick::ErrorXServer *) x));
}
static void *_p_Magick__ErrorTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *)  ((Magick::Error *) x));
}
static void *_p_Magick__ErrorBlobTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorBlob *) x));
}
static void *_p_Magick__ErrorCacheTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorCache *) x));
}
static void *_p_Magick__ErrorCoderTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorCoder *) x));
}
static void *_p_Magick__ErrorConfigureTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorConfigure *) x));
}
static void *_p_Magick__ErrorCorruptImageTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorCorruptImage *) x));
}
static void *_p_Magick__ErrorDelegateTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorDelegate *) x));
}
static void *_p_Magick__ErrorDrawTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorDraw *) x));
}
static void *_p_Magick__ErrorFileOpenTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorFileOpen *) x));
}
static void *_p_Magick__ErrorImageTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorImage *) x));
}
static void *_p_Magick__ErrorMissingDelegateTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorMissingDelegate *) x));
}
static void *_p_Magick__ErrorModuleTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorModule *) x));
}
static void *_p_Magick__ErrorMonitorTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorMonitor *) x));
}
static void *_p_Magick__ErrorOptionTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorOption *) x));
}
static void *_p_Magick__ErrorPolicyTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorPolicy *) x));
}
static void *_p_Magick__ErrorRegistryTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorRegistry *) x));
}
static void *_p_Magick__ErrorResourceLimitTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorResourceLimit *) x));
}
static void *_p_Magick__ErrorStreamTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorStream *) x));
}
static void *_p_Magick__ErrorTypeTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorType *) x));
}
static void *_p_Magick__ErrorUndefinedTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorUndefined *) x));
}
static void *_p_Magick__ErrorXServerTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Error *) ((Magick::ErrorXServer *) x));
}
static void *_p_Magick__WarningTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *)  ((Magick::Warning *) x));
}
static void *_p_Magick__WarningBlobTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningBlob *) x));
}
static void *_p_Magick__WarningCacheTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningCache *) x));
}
static void *_p_Magick__WarningCoderTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningCoder *) x));
}
static void *_p_Magick__WarningConfigureTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningConfigure *) x));
}
static void *_p_Magick__WarningCorruptImageTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningCorruptImage *) x));
}
static void *_p_Magick__WarningDelegateTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningDelegate *) x));
}
static void *_p_Magick__WarningDrawTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningDraw *) x));
}
static void *_p_Magick__WarningFileOpenTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningFileOpen *) x));
}
static void *_p_Magick__WarningImageTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningImage *) x));
}
static void *_p_Magick__WarningMissingDelegateTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningMissingDelegate *) x));
}
static void *_p_Magick__WarningModuleTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningModule *) x));
}
static void *_p_Magick__WarningMonitorTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningMonitor *) x));
}
static void *_p_Magick__WarningOptionTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningOption *) x));
}
static void *_p_Magick__WarningPolicyTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningPolicy *) x));
}
static void *_p_Magick__WarningRegistryTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningRegistry *) x));
}
static void *_p_Magick__WarningResourceLimitTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningResourceLimit *) x));
}
static void *_p_Magick__WarningStreamTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningStream *) x));
}
static void *_p_Magick__WarningTypeTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningType *) x));
}
static void *_p_Magick__WarningUndefinedTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningUndefined *) x));
}
static void *_p_Magick__WarningXServerTo_p_Magick__Exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Exception *) (Magick::Warning *) ((Magick::WarningXServer *) x));
}
static void *_p_Magick__MontageFramedTo_p_Magick__Montage(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Montage *)  ((Magick::MontageFramed *) x));
}
static void *_p_Magick__PathArcAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathArcAbs *) x));
}
static void *_p_Magick__PathArcRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathArcRel *) x));
}
static void *_p_Magick__PathClosePathTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathClosePath *) x));
}
static void *_p_Magick__PathCurvetoAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathCurvetoAbs *) x));
}
static void *_p_Magick__PathCurvetoRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathCurvetoRel *) x));
}
static void *_p_Magick__PathLinetoAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathLinetoAbs *) x));
}
static void *_p_Magick__PathLinetoHorizontalAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathLinetoHorizontalAbs *) x));
}
static void *_p_Magick__PathLinetoHorizontalRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathLinetoHorizontalRel *) x));
}
static void *_p_Magick__PathLinetoRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathLinetoRel *) x));
}
static void *_p_Magick__PathLinetoVerticalAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathLinetoVerticalAbs *) x));
}
static void *_p_Magick__PathLinetoVerticalRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathLinetoVerticalRel *) x));
}
static void *_p_Magick__PathMovetoAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathMovetoAbs *) x));
}
static void *_p_Magick__PathMovetoRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathMovetoRel *) x));
}
static void *_p_Magick__PathQuadraticCurvetoAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathQuadraticCurvetoAbs *) x));
}
static void *_p_Magick__PathQuadraticCurvetoRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathQuadraticCurvetoRel *) x));
}
static void *_p_Magick__PathSmoothCurvetoAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathSmoothCurvetoAbs *) x));
}
static void *_p_Magick__PathSmoothCurvetoRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathSmoothCurvetoRel *) x));
}
static void *_p_Magick__PathSmoothQuadraticCurvetoAbsTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathSmoothQuadraticCurvetoAbs *) x));
}
static void *_p_Magick__PathSmoothQuadraticCurvetoRelTo_p_Magick__VPathBase(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::VPathBase *)  ((Magick::PathSmoothQuadraticCurvetoRel *) x));
}
static void *_p_Magick__WarningBlobTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningBlob *) x));
}
static void *_p_Magick__WarningCacheTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningCache *) x));
}
static void *_p_Magick__WarningCoderTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningCoder *) x));
}
static void *_p_Magick__WarningConfigureTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningConfigure *) x));
}
static void *_p_Magick__WarningCorruptImageTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningCorruptImage *) x));
}
static void *_p_Magick__WarningDelegateTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningDelegate *) x));
}
static void *_p_Magick__WarningDrawTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningDraw *) x));
}
static void *_p_Magick__WarningFileOpenTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningFileOpen *) x));
}
static void *_p_Magick__WarningImageTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningImage *) x));
}
static void *_p_Magick__WarningMissingDelegateTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningMissingDelegate *) x));
}
static void *_p_Magick__WarningModuleTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningModule *) x));
}
static void *_p_Magick__WarningMonitorTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningMonitor *) x));
}
static void *_p_Magick__WarningOptionTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningOption *) x));
}
static void *_p_Magick__WarningPolicyTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningPolicy *) x));
}
static void *_p_Magick__WarningRegistryTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningRegistry *) x));
}
static void *_p_Magick__WarningResourceLimitTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningResourceLimit *) x));
}
static void *_p_Magick__WarningStreamTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningStream *) x));
}
static void *_p_Magick__WarningTypeTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningType *) x));
}
static void *_p_Magick__WarningUndefinedTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningUndefined *) x));
}
static void *_p_Magick__WarningXServerTo_p_Magick__Warning(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((Magick::Warning *)  ((Magick::WarningXServer *) x));
}
static void *_p_Magick__ErrorTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *) ((Magick::Error *) x));
}
static void *_p_Magick__ErrorBlobTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorBlob *) x));
}
static void *_p_Magick__ErrorCacheTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorCache *) x));
}
static void *_p_Magick__ErrorCoderTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorCoder *) x));
}
static void *_p_Magick__ErrorConfigureTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorConfigure *) x));
}
static void *_p_Magick__ErrorCorruptImageTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorCorruptImage *) x));
}
static void *_p_Magick__ErrorDelegateTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorDelegate *) x));
}
static void *_p_Magick__ErrorDrawTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorDraw *) x));
}
static void *_p_Magick__ErrorFileOpenTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorFileOpen *) x));
}
static void *_p_Magick__ErrorImageTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorImage *) x));
}
static void *_p_Magick__ErrorMissingDelegateTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorMissingDelegate *) x));
}
static void *_p_Magick__ErrorModuleTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorModule *) x));
}
static void *_p_Magick__ErrorMonitorTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorMonitor *) x));
}
static void *_p_Magick__ErrorOptionTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorOption *) x));
}
static void *_p_Magick__ErrorPolicyTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorPolicy *) x));
}
static void *_p_Magick__ErrorRegistryTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorRegistry *) x));
}
static void *_p_Magick__ErrorResourceLimitTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorResourceLimit *) x));
}
static void *_p_Magick__ErrorStreamTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorStream *) x));
}
static void *_p_Magick__ErrorTypeTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorType *) x));
}
static void *_p_Magick__ErrorUndefinedTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorUndefined *) x));
}
static void *_p_Magick__ErrorXServerTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Error *) ((Magick::ErrorXServer *) x));
}
static void *_p_Magick__ExceptionTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *)  ((Magick::Exception *) x));
}
static void *_p_Magick__WarningTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *) ((Magick::Warning *) x));
}
static void *_p_Magick__WarningBlobTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningBlob *) x));
}
static void *_p_Magick__WarningCacheTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningCache *) x));
}
static void *_p_Magick__WarningCoderTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningCoder *) x));
}
static void *_p_Magick__WarningConfigureTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningConfigure *) x));
}
static void *_p_Magick__WarningCorruptImageTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningCorruptImage *) x));
}
static void *_p_Magick__WarningDelegateTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningDelegate *) x));
}
static void *_p_Magick__WarningDrawTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningDraw *) x));
}
static void *_p_Magick__WarningFileOpenTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningFileOpen *) x));
}
static void *_p_Magick__WarningImageTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningImage *) x));
}
static void *_p_Magick__WarningMissingDelegateTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningMissingDelegate *) x));
}
static void *_p_Magick__WarningModuleTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningModule *) x));
}
static void *_p_Magick__WarningMonitorTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningMonitor *) x));
}
static void *_p_Magick__WarningOptionTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningOption *) x));
}
static void *_p_Magick__WarningPolicyTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningPolicy *) x));
}
static void *_p_Magick__WarningRegistryTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningRegistry *) x));
}
static void *_p_Magick__WarningResourceLimitTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningResourceLimit *) x));
}
static void *_p_Magick__WarningStreamTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningStream *) x));
}
static void *_p_Magick__WarningTypeTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningType *) x));
}
static void *_p_Magick__WarningUndefinedTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningUndefined *) x));
}
static void *_p_Magick__WarningXServerTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) {
    return (void *)((std::exception *) (Magick::Exception *)(Magick::Warning *) ((Magick::WarningXServer *) x));
}
static swig_type_info _swigt__p_FILE = {"_p_FILE", "FILE *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_ImageListContainer = {"_p_ImageListContainer", "ImageListContainer *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_ImageListIterator = {"_p_ImageListIterator", "ImageListIterator *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__AlignType = {"_p_MagickCore__AlignType", "MagickCore::AlignType *|enum MagickCore::AlignType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__CacheType = {"_p_MagickCore__CacheType", "MagickCore::CacheType *|enum MagickCore::CacheType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ChannelType = {"_p_MagickCore__ChannelType", "MagickCore::ChannelType *|enum MagickCore::ChannelType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ClassType = {"_p_MagickCore__ClassType", "MagickCore::ClassType *|enum MagickCore::ClassType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ColorspaceType = {"_p_MagickCore__ColorspaceType", "MagickCore::ColorspaceType *|enum MagickCore::ColorspaceType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ComplexOperator = {"_p_MagickCore__ComplexOperator", "MagickCore::ComplexOperator *|enum MagickCore::ComplexOperator *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ComplianceType = {"_p_MagickCore__ComplianceType", "MagickCore::ComplianceType *|enum MagickCore::ComplianceType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__CompositeOperator = {"_p_MagickCore__CompositeOperator", "MagickCore::CompositeOperator *|enum MagickCore::CompositeOperator *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__CompressionType = {"_p_MagickCore__CompressionType", "MagickCore::CompressionType *|enum MagickCore::CompressionType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__DecorationType = {"_p_MagickCore__DecorationType", "MagickCore::DecorationType *|enum MagickCore::DecorationType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__DirectionType = {"_p_MagickCore__DirectionType", "MagickCore::DirectionType *|enum MagickCore::DirectionType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__DisposeType = {"_p_MagickCore__DisposeType", "MagickCore::DisposeType *|enum MagickCore::DisposeType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__EndianType = {"_p_MagickCore__EndianType", "MagickCore::EndianType *|enum MagickCore::EndianType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ExceptionType = {"_p_MagickCore__ExceptionType", "MagickCore::ExceptionType *|enum MagickCore::ExceptionType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__FilterType = {"_p_MagickCore__FilterType", "MagickCore::FilterType *|enum MagickCore::FilterType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__GradientType = {"_p_MagickCore__GradientType", "MagickCore::GradientType *|enum MagickCore::GradientType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__GravityType = {"_p_MagickCore__GravityType", "MagickCore::GravityType *|enum MagickCore::GravityType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__IlluminantType = {"_p_MagickCore__IlluminantType", "MagickCore::IlluminantType *|enum MagickCore::IlluminantType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ImageType = {"_p_MagickCore__ImageType", "MagickCore::ImageType *|enum MagickCore::ImageType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__InterlaceType = {"_p_MagickCore__InterlaceType", "MagickCore::InterlaceType *|enum MagickCore::InterlaceType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__KernelInfoType = {"_p_MagickCore__KernelInfoType", "MagickCore::KernelInfoType *|enum MagickCore::KernelInfoType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__LogEventType = {"_p_MagickCore__LogEventType", "MagickCore::LogEventType *|enum MagickCore::LogEventType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__MagickBooleanType = {"_p_MagickCore__MagickBooleanType", "MagickCore::MagickBooleanType *|enum MagickCore::MagickBooleanType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__MagickCLDeviceType = {"_p_MagickCore__MagickCLDeviceType", "MagickCore::MagickCLDeviceType *|enum MagickCore::MagickCLDeviceType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__MagickEvaluateOperator = {"_p_MagickCore__MagickEvaluateOperator", "MagickCore::MagickEvaluateOperator *|enum MagickCore::MagickEvaluateOperator *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__MagickFormatType = {"_p_MagickCore__MagickFormatType", "MagickCore::MagickFormatType *|enum MagickCore::MagickFormatType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__MagickModuleType = {"_p_MagickCore__MagickModuleType", "MagickCore::MagickModuleType *|enum MagickCore::MagickModuleType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__MetricType = {"_p_MagickCore__MetricType", "MagickCore::MetricType *|enum MagickCore::MetricType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__NoiseType = {"_p_MagickCore__NoiseType", "MagickCore::NoiseType *|enum MagickCore::NoiseType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__OrientationType = {"_p_MagickCore__OrientationType", "MagickCore::OrientationType *|enum MagickCore::OrientationType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__PathType = {"_p_MagickCore__PathType", "MagickCore::PathType *|enum MagickCore::PathType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__PolicyDomain = {"_p_MagickCore__PolicyDomain", "MagickCore::PolicyDomain *|enum MagickCore::PolicyDomain *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__PolicyRights = {"_p_MagickCore__PolicyRights", "MagickCore::PolicyRights *|enum MagickCore::PolicyRights *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__PreviewType = {"_p_MagickCore__PreviewType", "MagickCore::PreviewType *|enum MagickCore::PreviewType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__PrimitiveType = {"_p_MagickCore__PrimitiveType", "MagickCore::PrimitiveType *|enum MagickCore::PrimitiveType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__QuantumAlphaType = {"_p_MagickCore__QuantumAlphaType", "MagickCore::QuantumAlphaType *|enum MagickCore::QuantumAlphaType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__QuantumFormatType = {"_p_MagickCore__QuantumFormatType", "MagickCore::QuantumFormatType *|enum MagickCore::QuantumFormatType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__QuantumType = {"_p_MagickCore__QuantumType", "MagickCore::QuantumType *|enum MagickCore::QuantumType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ReferenceType = {"_p_MagickCore__ReferenceType", "MagickCore::ReferenceType *|enum MagickCore::ReferenceType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__RegistryType = {"_p_MagickCore__RegistryType", "MagickCore::RegistryType *|enum MagickCore::RegistryType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ResolutionType = {"_p_MagickCore__ResolutionType", "MagickCore::ResolutionType *|enum MagickCore::ResolutionType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ResourceType = {"_p_MagickCore__ResourceType", "MagickCore::ResourceType *|enum MagickCore::ResourceType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__StatisticType = {"_p_MagickCore__StatisticType", "MagickCore::StatisticType *|enum MagickCore::StatisticType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__StorageType = {"_p_MagickCore__StorageType", "MagickCore::StorageType *|enum MagickCore::StorageType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__StretchType = {"_p_MagickCore__StretchType", "MagickCore::StretchType *|enum MagickCore::StretchType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__StyleType = {"_p_MagickCore__StyleType", "MagickCore::StyleType *|enum MagickCore::StyleType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__TransmitType = {"_p_MagickCore__TransmitType", "MagickCore::TransmitType *|enum MagickCore::TransmitType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__ValidateType = {"_p_MagickCore__ValidateType", "MagickCore::ValidateType *|enum MagickCore::ValidateType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore__WordBreakType = {"_p_MagickCore__WordBreakType", "MagickCore::WordBreakType *|enum MagickCore::WordBreakType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___ChannelMoments = {"_p_MagickCore___ChannelMoments", "MagickCore::ChannelMoments *|MagickCore::_ChannelMoments *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___ChannelPerceptualHash = {"_p_MagickCore___ChannelPerceptualHash", "MagickCore::ChannelPerceptualHash *|MagickCore::_ChannelPerceptualHash *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___ChannelStatistics = {"_p_MagickCore___ChannelStatistics", "MagickCore::ChannelStatistics *|MagickCore::_ChannelStatistics *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___ExceptionInfo = {"_p_MagickCore___ExceptionInfo", "MagickCore::ExceptionInfo *|MagickCore::_ExceptionInfo *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___Image = {"_p_MagickCore___Image", "MagickCore::Image *|MagickCore::_Image *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___ImageInfo = {"_p_MagickCore___ImageInfo", "MagickCore::ImageInfo *|MagickCore::_ImageInfo *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___MontageInfo = {"_p_MagickCore___MontageInfo", "MagickCore::MontageInfo *|MagickCore::_MontageInfo *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___QuantizeInfo = {"_p_MagickCore___QuantizeInfo", "MagickCore::QuantizeInfo *|MagickCore::_QuantizeInfo *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickCore___RectangleInfo = {"_p_MagickCore___RectangleInfo", "MagickCore::RectangleInfo *|MagickCore::_RectangleInfo *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_MagickWand = {"_p_MagickWand", "MagickWand *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Blob = {"_p_Magick__Blob", "Magick::Blob *|p_Magick__Blob", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ChannelMoments = {"_p_Magick__ChannelMoments", "Magick::ChannelMoments *|p_Magick__ChannelMoments", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ChannelPerceptualHash = {"_p_Magick__ChannelPerceptualHash", "p_Magick__ChannelPerceptualHash|Magick::ChannelPerceptualHash *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ChannelStatistics = {"_p_Magick__ChannelStatistics", "p_Magick__ChannelStatistics|Magick::ChannelStatistics *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__CoderInfo = {"_p_Magick__CoderInfo", "p_Magick__CoderInfo|std::vector< Magick::CoderInfo >::value_type *|Magick::CoderInfo *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Color = {"_p_Magick__Color", "p_Magick__Color|Magick::Color *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ColorCMYK = {"_p_Magick__ColorCMYK", "Magick::ColorCMYK *|p_Magick__ColorCMYK", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ColorGray = {"_p_Magick__ColorGray", "Magick::ColorGray *|p_Magick__ColorGray", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ColorHSL = {"_p_Magick__ColorHSL", "p_Magick__ColorHSL|Magick::ColorHSL *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ColorMono = {"_p_Magick__ColorMono", "p_Magick__ColorMono|Magick::ColorMono *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ColorRGB = {"_p_Magick__ColorRGB", "Magick::ColorRGB *|p_Magick__ColorRGB", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ColorYUV = {"_p_Magick__ColorYUV", "Magick::ColorYUV *|p_Magick__ColorYUV", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Coordinate = {"_p_Magick__Coordinate", "p_Magick__Coordinate|Magick::Coordinate *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Drawable = {"_p_Magick__Drawable", "p_Magick__Drawable|Magick::Drawable *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableAffine = {"_p_Magick__DrawableAffine", "Magick::DrawableAffine *|p_Magick__DrawableAffine", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableAlpha = {"_p_Magick__DrawableAlpha", "p_Magick__DrawableAlpha|Magick::DrawableAlpha *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableArc = {"_p_Magick__DrawableArc", "p_Magick__DrawableArc|Magick::DrawableArc *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableBase = {"_p_Magick__DrawableBase", "p_Magick__DrawableBase|Magick::DrawableBase *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableBezier = {"_p_Magick__DrawableBezier", "Magick::DrawableBezier *|p_Magick__DrawableBezier", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableBorderColor = {"_p_Magick__DrawableBorderColor", "p_Magick__DrawableBorderColor|Magick::DrawableBorderColor *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableCircle = {"_p_Magick__DrawableCircle", "Magick::DrawableCircle *|p_Magick__DrawableCircle", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableClipPath = {"_p_Magick__DrawableClipPath", "Magick::DrawableClipPath *|p_Magick__DrawableClipPath", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableClipRule = {"_p_Magick__DrawableClipRule", "Magick::DrawableClipRule *|p_Magick__DrawableClipRule", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableClipUnits = {"_p_Magick__DrawableClipUnits", "p_Magick__DrawableClipUnits|Magick::DrawableClipUnits *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableColor = {"_p_Magick__DrawableColor", "Magick::DrawableColor *|p_Magick__DrawableColor", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableCompositeImage = {"_p_Magick__DrawableCompositeImage", "p_Magick__DrawableCompositeImage|Magick::DrawableCompositeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableDensity = {"_p_Magick__DrawableDensity", "Magick::DrawableDensity *|p_Magick__DrawableDensity", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableEllipse = {"_p_Magick__DrawableEllipse", "Magick::DrawableEllipse *|p_Magick__DrawableEllipse", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableFillColor = {"_p_Magick__DrawableFillColor", "p_Magick__DrawableFillColor|Magick::DrawableFillColor *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableFillOpacity = {"_p_Magick__DrawableFillOpacity", "Magick::DrawableFillOpacity *|p_Magick__DrawableFillOpacity", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableFillPatternUrl = {"_p_Magick__DrawableFillPatternUrl", "p_Magick__DrawableFillPatternUrl|Magick::DrawableFillPatternUrl *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableFillRule = {"_p_Magick__DrawableFillRule", "p_Magick__DrawableFillRule|Magick::DrawableFillRule *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableFont = {"_p_Magick__DrawableFont", "p_Magick__DrawableFont|Magick::DrawableFont *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableGravity = {"_p_Magick__DrawableGravity", "Magick::DrawableGravity *|p_Magick__DrawableGravity", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableLine = {"_p_Magick__DrawableLine", "p_Magick__DrawableLine|Magick::DrawableLine *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableMiterLimit = {"_p_Magick__DrawableMiterLimit", "Magick::DrawableMiterLimit *|p_Magick__DrawableMiterLimit", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePath = {"_p_Magick__DrawablePath", "Magick::DrawablePath *|p_Magick__DrawablePath", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePoint = {"_p_Magick__DrawablePoint", "p_Magick__DrawablePoint|Magick::DrawablePoint *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePointSize = {"_p_Magick__DrawablePointSize", "Magick::DrawablePointSize *|p_Magick__DrawablePointSize", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePolygon = {"_p_Magick__DrawablePolygon", "Magick::DrawablePolygon *|p_Magick__DrawablePolygon", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePolyline = {"_p_Magick__DrawablePolyline", "Magick::DrawablePolyline *|p_Magick__DrawablePolyline", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePopClipPath = {"_p_Magick__DrawablePopClipPath", "p_Magick__DrawablePopClipPath|Magick::DrawablePopClipPath *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePopGraphicContext = {"_p_Magick__DrawablePopGraphicContext", "p_Magick__DrawablePopGraphicContext|Magick::DrawablePopGraphicContext *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePopPattern = {"_p_Magick__DrawablePopPattern", "p_Magick__DrawablePopPattern|Magick::DrawablePopPattern *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePushClipPath = {"_p_Magick__DrawablePushClipPath", "Magick::DrawablePushClipPath *|p_Magick__DrawablePushClipPath", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePushGraphicContext = {"_p_Magick__DrawablePushGraphicContext", "p_Magick__DrawablePushGraphicContext|Magick::DrawablePushGraphicContext *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawablePushPattern = {"_p_Magick__DrawablePushPattern", "p_Magick__DrawablePushPattern|Magick::DrawablePushPattern *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableRectangle = {"_p_Magick__DrawableRectangle", "p_Magick__DrawableRectangle|Magick::DrawableRectangle *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableRotation = {"_p_Magick__DrawableRotation", "p_Magick__DrawableRotation|Magick::DrawableRotation *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableRoundRectangle = {"_p_Magick__DrawableRoundRectangle", "p_Magick__DrawableRoundRectangle|Magick::DrawableRoundRectangle *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableScaling = {"_p_Magick__DrawableScaling", "Magick::DrawableScaling *|p_Magick__DrawableScaling", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableSkewX = {"_p_Magick__DrawableSkewX", "Magick::DrawableSkewX *|p_Magick__DrawableSkewX", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableSkewY = {"_p_Magick__DrawableSkewY", "Magick::DrawableSkewY *|p_Magick__DrawableSkewY", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeAntialias = {"_p_Magick__DrawableStrokeAntialias", "Magick::DrawableStrokeAntialias *|p_Magick__DrawableStrokeAntialias", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeColor = {"_p_Magick__DrawableStrokeColor", "p_Magick__DrawableStrokeColor|Magick::DrawableStrokeColor *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeDashArray = {"_p_Magick__DrawableStrokeDashArray", "Magick::DrawableStrokeDashArray *|p_Magick__DrawableStrokeDashArray", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeDashOffset = {"_p_Magick__DrawableStrokeDashOffset", "Magick::DrawableStrokeDashOffset *|p_Magick__DrawableStrokeDashOffset", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeLineCap = {"_p_Magick__DrawableStrokeLineCap", "Magick::DrawableStrokeLineCap *|p_Magick__DrawableStrokeLineCap", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeLineJoin = {"_p_Magick__DrawableStrokeLineJoin", "Magick::DrawableStrokeLineJoin *|p_Magick__DrawableStrokeLineJoin", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeOpacity = {"_p_Magick__DrawableStrokeOpacity", "p_Magick__DrawableStrokeOpacity|Magick::DrawableStrokeOpacity *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokePatternUrl = {"_p_Magick__DrawableStrokePatternUrl", "Magick::DrawableStrokePatternUrl *|p_Magick__DrawableStrokePatternUrl", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableStrokeWidth = {"_p_Magick__DrawableStrokeWidth", "p_Magick__DrawableStrokeWidth|Magick::DrawableStrokeWidth *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableText = {"_p_Magick__DrawableText", "p_Magick__DrawableText|Magick::DrawableText *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextAlignment = {"_p_Magick__DrawableTextAlignment", "Magick::DrawableTextAlignment *|p_Magick__DrawableTextAlignment", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextAntialias = {"_p_Magick__DrawableTextAntialias", "Magick::DrawableTextAntialias *|p_Magick__DrawableTextAntialias", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextDecoration = {"_p_Magick__DrawableTextDecoration", "p_Magick__DrawableTextDecoration|Magick::DrawableTextDecoration *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextDirection = {"_p_Magick__DrawableTextDirection", "Magick::DrawableTextDirection *|p_Magick__DrawableTextDirection", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextInterlineSpacing = {"_p_Magick__DrawableTextInterlineSpacing", "Magick::DrawableTextInterlineSpacing *|p_Magick__DrawableTextInterlineSpacing", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextInterwordSpacing = {"_p_Magick__DrawableTextInterwordSpacing", "p_Magick__DrawableTextInterwordSpacing|Magick::DrawableTextInterwordSpacing *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextKerning = {"_p_Magick__DrawableTextKerning", "Magick::DrawableTextKerning *|p_Magick__DrawableTextKerning", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTextUnderColor = {"_p_Magick__DrawableTextUnderColor", "p_Magick__DrawableTextUnderColor|Magick::DrawableTextUnderColor *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableTranslation = {"_p_Magick__DrawableTranslation", "p_Magick__DrawableTranslation|Magick::DrawableTranslation *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__DrawableViewbox = {"_p_Magick__DrawableViewbox", "Magick::DrawableViewbox *|p_Magick__DrawableViewbox", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Error = {"_p_Magick__Error", "Magick::Error *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ErrorBlob = {"_p_Magick__ErrorBlob", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorCache = {"_p_Magick__ErrorCache", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorCoder = {"_p_Magick__ErrorCoder", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorConfigure = {"_p_Magick__ErrorConfigure", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorCorruptImage = {"_p_Magick__ErrorCorruptImage", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorDelegate = {"_p_Magick__ErrorDelegate", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorDraw = {"_p_Magick__ErrorDraw", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorFileOpen = {"_p_Magick__ErrorFileOpen", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorImage = {"_p_Magick__ErrorImage", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorMissingDelegate = {"_p_Magick__ErrorMissingDelegate", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorModule = {"_p_Magick__ErrorModule", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorMonitor = {"_p_Magick__ErrorMonitor", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorOption = {"_p_Magick__ErrorOption", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorRegistry = {"_p_Magick__ErrorRegistry", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorResourceLimit = {"_p_Magick__ErrorResourceLimit", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorStream = {"_p_Magick__ErrorStream", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorUndefined = {"_p_Magick__ErrorUndefined", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorXServer = {"_p_Magick__ErrorXServer", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__ErrorPolicy = {"_p_Magick__ErrorPolicy", "p_Magick__ErrorPolicy", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ErrorType = {"_p_Magick__ErrorType", "p_Magick__ErrorType", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Exception = {"_p_Magick__Exception", "Magick::Exception *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__WarningBlob = {"_p_Magick__WarningBlob", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningCache = {"_p_Magick__WarningCache", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningCoder = {"_p_Magick__WarningCoder", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningConfigure = {"_p_Magick__WarningConfigure", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningCorruptImage = {"_p_Magick__WarningCorruptImage", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningDelegate = {"_p_Magick__WarningDelegate", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningDraw = {"_p_Magick__WarningDraw", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningFileOpen = {"_p_Magick__WarningFileOpen", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningImage = {"_p_Magick__WarningImage", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningMissingDelegate = {"_p_Magick__WarningMissingDelegate", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningModule = {"_p_Magick__WarningModule", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningMonitor = {"_p_Magick__WarningMonitor", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningOption = {"_p_Magick__WarningOption", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningRegistry = {"_p_Magick__WarningRegistry", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningResourceLimit = {"_p_Magick__WarningResourceLimit", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningStream = {"_p_Magick__WarningStream", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningUndefined = {"_p_Magick__WarningUndefined", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__WarningXServer = {"_p_Magick__WarningXServer", 0, 0, 0, 0, 0};
static swig_type_info _swigt__p_Magick__Geometry = {"_p_Magick__Geometry", "Magick::Geometry *|p_Magick__Geometry", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Image = {"_p_Magick__Image", "p_Magick__Image|Magick::Image *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ImageMoments = {"_p_Magick__ImageMoments", "p_Magick__ImageMoments|Magick::ImageMoments *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ImagePerceptualHash = {"_p_Magick__ImagePerceptualHash", "Magick::ImagePerceptualHash *|p_Magick__ImagePerceptualHash", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ImageStatistics = {"_p_Magick__ImageStatistics", "p_Magick__ImageStatistics|Magick::ImageStatistics *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Montage = {"_p_Magick__Montage", "p_Magick__Montage|Magick::Montage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__MontageFramed = {"_p_Magick__MontageFramed", "Magick::MontageFramed *|p_Magick__MontageFramed", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Offset = {"_p_Magick__Offset", "Magick::Offset *|p_Magick__Offset", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Options = {"_p_Magick__Options", "Magick::Options *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathArcAbs = {"_p_Magick__PathArcAbs", "p_Magick__PathArcAbs|Magick::PathArcAbs *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathArcArgs = {"_p_Magick__PathArcArgs", "p_Magick__PathArcArgs|Magick::PathArcArgs *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathArcRel = {"_p_Magick__PathArcRel", "p_Magick__PathArcRel|Magick::PathArcRel *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathClosePath = {"_p_Magick__PathClosePath", "Magick::PathClosePath *|p_Magick__PathClosePath", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathCurvetoAbs = {"_p_Magick__PathCurvetoAbs", "p_Magick__PathCurvetoAbs|Magick::PathCurvetoAbs *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathCurvetoArgs = {"_p_Magick__PathCurvetoArgs", "Magick::PathCurvetoArgs *|p_Magick__PathCurvetoArgs", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathCurvetoRel = {"_p_Magick__PathCurvetoRel", "p_Magick__PathCurvetoRel|Magick::PathCurvetoRel *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathLinetoAbs = {"_p_Magick__PathLinetoAbs", "p_Magick__PathLinetoAbs|Magick::PathLinetoAbs *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathLinetoHorizontalAbs = {"_p_Magick__PathLinetoHorizontalAbs", "p_Magick__PathLinetoHorizontalAbs|Magick::PathLinetoHorizontalAbs *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathLinetoHorizontalRel = {"_p_Magick__PathLinetoHorizontalRel", "p_Magick__PathLinetoHorizontalRel|Magick::PathLinetoHorizontalRel *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathLinetoRel = {"_p_Magick__PathLinetoRel", "Magick::PathLinetoRel *|p_Magick__PathLinetoRel", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathLinetoVerticalAbs = {"_p_Magick__PathLinetoVerticalAbs", "Magick::PathLinetoVerticalAbs *|p_Magick__PathLinetoVerticalAbs", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathLinetoVerticalRel = {"_p_Magick__PathLinetoVerticalRel", "Magick::PathLinetoVerticalRel *|p_Magick__PathLinetoVerticalRel", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathMovetoAbs = {"_p_Magick__PathMovetoAbs", "Magick::PathMovetoAbs *|p_Magick__PathMovetoAbs", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathMovetoRel = {"_p_Magick__PathMovetoRel", "p_Magick__PathMovetoRel|Magick::PathMovetoRel *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathQuadraticCurvetoAbs = {"_p_Magick__PathQuadraticCurvetoAbs", "p_Magick__PathQuadraticCurvetoAbs|Magick::PathQuadraticCurvetoAbs *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathQuadraticCurvetoArgs = {"_p_Magick__PathQuadraticCurvetoArgs", "Magick::PathQuadraticCurvetoArgs *|p_Magick__PathQuadraticCurvetoArgs", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathQuadraticCurvetoRel = {"_p_Magick__PathQuadraticCurvetoRel", "p_Magick__PathQuadraticCurvetoRel|Magick::PathQuadraticCurvetoRel *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathSmoothCurvetoAbs = {"_p_Magick__PathSmoothCurvetoAbs", "Magick::PathSmoothCurvetoAbs *|p_Magick__PathSmoothCurvetoAbs", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathSmoothCurvetoRel = {"_p_Magick__PathSmoothCurvetoRel", "Magick::PathSmoothCurvetoRel *|p_Magick__PathSmoothCurvetoRel", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathSmoothQuadraticCurvetoAbs = {"_p_Magick__PathSmoothQuadraticCurvetoAbs", "p_Magick__PathSmoothQuadraticCurvetoAbs|Magick::PathSmoothQuadraticCurvetoAbs *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__PathSmoothQuadraticCurvetoRel = {"_p_Magick__PathSmoothQuadraticCurvetoRel", "p_Magick__PathSmoothQuadraticCurvetoRel|Magick::PathSmoothQuadraticCurvetoRel *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Point = {"_p_Magick__Point", "Magick::Point *|p_Magick__Point", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ReadOptions = {"_p_Magick__ReadOptions", "Magick::ReadOptions *|p_Magick__ReadOptions", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__ResourceLimits = {"_p_Magick__ResourceLimits", "p_Magick__ResourceLimits", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__TypeMetric = {"_p_Magick__TypeMetric", "p_Magick__TypeMetric|Magick::TypeMetric *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__VPath = {"_p_Magick__VPath", "p_Magick__VPath|Magick::VPath *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__VPathBase = {"_p_Magick__VPathBase", "Magick::VPathBase *|p_Magick__VPathBase", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__Warning = {"_p_Magick__Warning", "Magick::Warning *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__WarningPolicy = {"_p_Magick__WarningPolicy", "p_Magick__WarningPolicy", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__WarningType = {"_p_Magick__WarningType", "p_Magick__WarningType", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__adaptiveBlurImage = {"_p_Magick__adaptiveBlurImage", "p_Magick__adaptiveBlurImage|Magick::adaptiveBlurImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__adaptiveThresholdImage = {"_p_Magick__adaptiveThresholdImage", "p_Magick__adaptiveThresholdImage|Magick::adaptiveThresholdImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__addNoiseImage = {"_p_Magick__addNoiseImage", "Magick::addNoiseImage *|p_Magick__addNoiseImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__adjoinImage = {"_p_Magick__adjoinImage", "Magick::adjoinImage *|p_Magick__adjoinImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__affineTransformImage = {"_p_Magick__affineTransformImage", "p_Magick__affineTransformImage|Magick::affineTransformImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__alphaFlagImage = {"_p_Magick__alphaFlagImage", "Magick::alphaFlagImage *|p_Magick__alphaFlagImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__alphaImage = {"_p_Magick__alphaImage", "p_Magick__alphaImage|Magick::alphaImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__animationDelayImage = {"_p_Magick__animationDelayImage", "Magick::animationDelayImage *|p_Magick__animationDelayImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__animationIterationsImage = {"_p_Magick__animationIterationsImage", "Magick::animationIterationsImage *|p_Magick__animationIterationsImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__annotateImage = {"_p_Magick__annotateImage", "Magick::annotateImage *|p_Magick__annotateImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__backgroundColorImage = {"_p_Magick__backgroundColorImage", "Magick::backgroundColorImage *|p_Magick__backgroundColorImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__backgroundTextureImage = {"_p_Magick__backgroundTextureImage", "p_Magick__backgroundTextureImage|Magick::backgroundTextureImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__blurImage = {"_p_Magick__blurImage", "p_Magick__blurImage|Magick::blurImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__borderColorImage = {"_p_Magick__borderColorImage", "p_Magick__borderColorImage|Magick::borderColorImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__borderImage = {"_p_Magick__borderImage", "p_Magick__borderImage|Magick::borderImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__boxColorImage = {"_p_Magick__boxColorImage", "Magick::boxColorImage *|p_Magick__boxColorImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__cdlImage = {"_p_Magick__cdlImage", "Magick::cdlImage *|p_Magick__cdlImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__channelImage = {"_p_Magick__channelImage", "Magick::channelImage *|p_Magick__channelImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__charcoalImage = {"_p_Magick__charcoalImage", "p_Magick__charcoalImage|Magick::charcoalImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__chopImage = {"_p_Magick__chopImage", "Magick::chopImage *|p_Magick__chopImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__chromaBluePrimaryImage = {"_p_Magick__chromaBluePrimaryImage", "p_Magick__chromaBluePrimaryImage|Magick::chromaBluePrimaryImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__chromaGreenPrimaryImage = {"_p_Magick__chromaGreenPrimaryImage", "Magick::chromaGreenPrimaryImage *|p_Magick__chromaGreenPrimaryImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__chromaRedPrimaryImage = {"_p_Magick__chromaRedPrimaryImage", "p_Magick__chromaRedPrimaryImage|Magick::chromaRedPrimaryImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__chromaWhitePointImage = {"_p_Magick__chromaWhitePointImage", "p_Magick__chromaWhitePointImage|Magick::chromaWhitePointImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__colorFuzzImage = {"_p_Magick__colorFuzzImage", "p_Magick__colorFuzzImage|Magick::colorFuzzImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__colorMapImage = {"_p_Magick__colorMapImage", "p_Magick__colorMapImage|Magick::colorMapImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__colorMatrixImage = {"_p_Magick__colorMatrixImage", "Magick::colorMatrixImage *|p_Magick__colorMatrixImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__colorSpaceImage = {"_p_Magick__colorSpaceImage", "p_Magick__colorSpaceImage|Magick::colorSpaceImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__colorizeImage = {"_p_Magick__colorizeImage", "p_Magick__colorizeImage|Magick::colorizeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__commentImage = {"_p_Magick__commentImage", "p_Magick__commentImage|Magick::commentImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__composeImage = {"_p_Magick__composeImage", "p_Magick__composeImage|Magick::composeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__compositeImage = {"_p_Magick__compositeImage", "p_Magick__compositeImage|Magick::compositeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__compressTypeImage = {"_p_Magick__compressTypeImage", "Magick::compressTypeImage *|p_Magick__compressTypeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__contrastImage = {"_p_Magick__contrastImage", "Magick::contrastImage *|p_Magick__contrastImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__cropImage = {"_p_Magick__cropImage", "Magick::cropImage *|p_Magick__cropImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__cycleColormapImage = {"_p_Magick__cycleColormapImage", "p_Magick__cycleColormapImage|Magick::cycleColormapImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__densityImage = {"_p_Magick__densityImage", "Magick::densityImage *|p_Magick__densityImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__depthImage = {"_p_Magick__depthImage", "p_Magick__depthImage|Magick::depthImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__despeckleImage = {"_p_Magick__despeckleImage", "Magick::despeckleImage *|p_Magick__despeckleImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__distortImage = {"_p_Magick__distortImage", "p_Magick__distortImage|Magick::distortImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__drawImage = {"_p_Magick__drawImage", "p_Magick__drawImage|Magick::drawImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__edgeImage = {"_p_Magick__edgeImage", "p_Magick__edgeImage|Magick::edgeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__embossImage = {"_p_Magick__embossImage", "Magick::embossImage *|p_Magick__embossImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__endianImage = {"_p_Magick__endianImage", "Magick::endianImage *|p_Magick__endianImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__enhanceImage = {"_p_Magick__enhanceImage", "p_Magick__enhanceImage|Magick::enhanceImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__equalizeImage = {"_p_Magick__equalizeImage", "Magick::equalizeImage *|p_Magick__equalizeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__fileNameImage = {"_p_Magick__fileNameImage", "p_Magick__fileNameImage|Magick::fileNameImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__fillColorImage = {"_p_Magick__fillColorImage", "p_Magick__fillColorImage|Magick::fillColorImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__filterTypeImage = {"_p_Magick__filterTypeImage", "Magick::filterTypeImage *|p_Magick__filterTypeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__flipImage = {"_p_Magick__flipImage", "Magick::flipImage *|p_Magick__flipImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__floodFillAlphaImage = {"_p_Magick__floodFillAlphaImage", "p_Magick__floodFillAlphaImage|Magick::floodFillAlphaImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__floodFillColorImage = {"_p_Magick__floodFillColorImage", "Magick::floodFillColorImage *|p_Magick__floodFillColorImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__floodFillTextureImage = {"_p_Magick__floodFillTextureImage", "Magick::floodFillTextureImage *|p_Magick__floodFillTextureImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__flopImage = {"_p_Magick__flopImage", "Magick::flopImage *|p_Magick__flopImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__fontImage = {"_p_Magick__fontImage", "p_Magick__fontImage|Magick::fontImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__fontPointsizeImage = {"_p_Magick__fontPointsizeImage", "Magick::fontPointsizeImage *|p_Magick__fontPointsizeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__frameImage = {"_p_Magick__frameImage", "p_Magick__frameImage|Magick::frameImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__gammaImage = {"_p_Magick__gammaImage", "p_Magick__gammaImage|Magick::gammaImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__gaussianBlurImage = {"_p_Magick__gaussianBlurImage", "Magick::gaussianBlurImage *|p_Magick__gaussianBlurImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__gifDisposeMethodImage = {"_p_Magick__gifDisposeMethodImage", "p_Magick__gifDisposeMethodImage|Magick::gifDisposeMethodImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__haldClutImage = {"_p_Magick__haldClutImage", "p_Magick__haldClutImage|Magick::haldClutImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__implodeImage = {"_p_Magick__implodeImage", "p_Magick__implodeImage|Magick::implodeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__interlaceTypeImage = {"_p_Magick__interlaceTypeImage", "p_Magick__interlaceTypeImage|Magick::interlaceTypeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__inverseFourierTransformImage = {"_p_Magick__inverseFourierTransformImage", "Magick::inverseFourierTransformImage *|p_Magick__inverseFourierTransformImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__isValidImage = {"_p_Magick__isValidImage", "p_Magick__isValidImage|Magick::isValidImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__labelImage = {"_p_Magick__labelImage", "Magick::labelImage *|p_Magick__labelImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__levelImage = {"_p_Magick__levelImage", "p_Magick__levelImage|Magick::levelImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__magickImage = {"_p_Magick__magickImage", "p_Magick__magickImage|Magick::magickImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__magnifyImage = {"_p_Magick__magnifyImage", "Magick::magnifyImage *|p_Magick__magnifyImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__mapImage = {"_p_Magick__mapImage", "p_Magick__mapImage|Magick::mapImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__matteColorImage = {"_p_Magick__matteColorImage", "Magick::matteColorImage *|p_Magick__matteColorImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__medianConvolveImage = {"_p_Magick__medianConvolveImage", "p_Magick__medianConvolveImage|Magick::medianConvolveImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__minifyImage = {"_p_Magick__minifyImage", "Magick::minifyImage *|p_Magick__minifyImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__modulateImage = {"_p_Magick__modulateImage", "Magick::modulateImage *|p_Magick__modulateImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__monochromeImage = {"_p_Magick__monochromeImage", "Magick::monochromeImage *|p_Magick__monochromeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__negateImage = {"_p_Magick__negateImage", "Magick::negateImage *|p_Magick__negateImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__normalizeImage = {"_p_Magick__normalizeImage", "Magick::normalizeImage *|p_Magick__normalizeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__oilPaintImage = {"_p_Magick__oilPaintImage", "p_Magick__oilPaintImage|Magick::oilPaintImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__opaqueImage = {"_p_Magick__opaqueImage", "p_Magick__opaqueImage|Magick::opaqueImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__pageImage = {"_p_Magick__pageImage", "p_Magick__pageImage|Magick::pageImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__pixelColorImage = {"_p_Magick__pixelColorImage", "p_Magick__pixelColorImage|Magick::pixelColorImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__qualityImage = {"_p_Magick__qualityImage", "p_Magick__qualityImage|Magick::qualityImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__quantizeColorSpaceImage = {"_p_Magick__quantizeColorSpaceImage", "Magick::quantizeColorSpaceImage *|p_Magick__quantizeColorSpaceImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__quantizeColorsImage = {"_p_Magick__quantizeColorsImage", "Magick::quantizeColorsImage *|p_Magick__quantizeColorsImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__quantizeDitherImage = {"_p_Magick__quantizeDitherImage", "Magick::quantizeDitherImage *|p_Magick__quantizeDitherImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__quantizeImage = {"_p_Magick__quantizeImage", "Magick::quantizeImage *|p_Magick__quantizeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__quantizeTreeDepthImage = {"_p_Magick__quantizeTreeDepthImage", "p_Magick__quantizeTreeDepthImage|Magick::quantizeTreeDepthImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__raiseImage = {"_p_Magick__raiseImage", "p_Magick__raiseImage|Magick::raiseImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__reduceNoiseImage = {"_p_Magick__reduceNoiseImage", "Magick::reduceNoiseImage *|p_Magick__reduceNoiseImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__renderingIntentImage = {"_p_Magick__renderingIntentImage", "p_Magick__renderingIntentImage|Magick::renderingIntentImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__resizeImage = {"_p_Magick__resizeImage", "p_Magick__resizeImage|Magick::resizeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__resolutionUnitsImage = {"_p_Magick__resolutionUnitsImage", "Magick::resolutionUnitsImage *|p_Magick__resolutionUnitsImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__rollImage = {"_p_Magick__rollImage", "Magick::rollImage *|p_Magick__rollImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__rotateImage = {"_p_Magick__rotateImage", "p_Magick__rotateImage|Magick::rotateImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__sampleImage = {"_p_Magick__sampleImage", "Magick::sampleImage *|p_Magick__sampleImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__scaleImage = {"_p_Magick__scaleImage", "p_Magick__scaleImage|Magick::scaleImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__sceneImage = {"_p_Magick__sceneImage", "p_Magick__sceneImage|Magick::sceneImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__segmentImage = {"_p_Magick__segmentImage", "Magick::segmentImage *|p_Magick__segmentImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__shadeImage = {"_p_Magick__shadeImage", "p_Magick__shadeImage|Magick::shadeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__shadowImage = {"_p_Magick__shadowImage", "p_Magick__shadowImage|Magick::shadowImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__sharpenImage = {"_p_Magick__sharpenImage", "p_Magick__sharpenImage|Magick::sharpenImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__shaveImage = {"_p_Magick__shaveImage", "p_Magick__shaveImage|Magick::shaveImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__shearImage = {"_p_Magick__shearImage", "Magick::shearImage *|p_Magick__shearImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__sizeImage = {"_p_Magick__sizeImage", "p_Magick__sizeImage|Magick::sizeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__solarizeImage = {"_p_Magick__solarizeImage", "p_Magick__solarizeImage|Magick::solarizeImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__spliceImage = {"_p_Magick__spliceImage", "p_Magick__spliceImage|Magick::spliceImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__spreadImage = {"_p_Magick__spreadImage", "p_Magick__spreadImage|Magick::spreadImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__steganoImage = {"_p_Magick__steganoImage", "p_Magick__steganoImage|Magick::steganoImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__stereoImage = {"_p_Magick__stereoImage", "Magick::stereoImage *|p_Magick__stereoImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__stripImage = {"_p_Magick__stripImage", "p_Magick__stripImage|Magick::stripImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__strokeColorImage = {"_p_Magick__strokeColorImage", "Magick::strokeColorImage *|p_Magick__strokeColorImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__subImageImage = {"_p_Magick__subImageImage", "Magick::subImageImage *|p_Magick__subImageImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__subRangeImage = {"_p_Magick__subRangeImage", "Magick::subRangeImage *|p_Magick__subRangeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__swirlImage = {"_p_Magick__swirlImage", "Magick::swirlImage *|p_Magick__swirlImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__textAntiAliasImage = {"_p_Magick__textAntiAliasImage", "p_Magick__textAntiAliasImage|Magick::textAntiAliasImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__textureImage = {"_p_Magick__textureImage", "p_Magick__textureImage|Magick::textureImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__thresholdImage = {"_p_Magick__thresholdImage", "Magick::thresholdImage *|p_Magick__thresholdImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__transparentImage = {"_p_Magick__transparentImage", "Magick::transparentImage *|p_Magick__transparentImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__trimImage = {"_p_Magick__trimImage", "p_Magick__trimImage|Magick::trimImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__typeImage = {"_p_Magick__typeImage", "Magick::typeImage *|p_Magick__typeImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__verboseImage = {"_p_Magick__verboseImage", "p_Magick__verboseImage|Magick::verboseImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__waveImage = {"_p_Magick__waveImage", "Magick::waveImage *|p_Magick__waveImage", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__x11DisplayImage = {"_p_Magick__x11DisplayImage", "p_Magick__x11DisplayImage|Magick::x11DisplayImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Magick__zoomImage = {"_p_Magick__zoomImage", "p_Magick__zoomImage|Magick::zoomImage *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p__DrawingWand = {"_p__DrawingWand", "MagickCore::DrawingWand *|_DrawingWand *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p__PolicyInfo = {"_p__PolicyInfo", "MagickCore::PolicyInfo *|_PolicyInfo *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_difference_type = {"_p_difference_type", "difference_type *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_double = {"_p_double", "MagickCore::MagickDoubleType *|MagickCore::MagickRealType *|double *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_float = {"_p_float", "Magick::Quantum *|MagickCore::MagickFloatType *|float *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_long_long = {"_p_long_long", "MagickCore::MagickOffsetType *|long long *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_p_MagickCore___Image = {"_p_p_MagickCore___Image", "MagickCore::Image **|MagickCore::_Image **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_p_void = {"_p_p_void", "void **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_size_t = {"_p_size_t", "size_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_size_type = {"_p_size_type", "size_type *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__exception = {"_p_std__exception", "std::exception *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__vectorT_Magick__CoderInfo_t = {"_p_std__vectorT_Magick__CoderInfo_t", "p_std__vectorT_Magick__CoderInfo_t|std::vector< Magick::CoderInfo > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__vectorT_Magick__Coordinate_t = {"_p_std__vectorT_Magick__Coordinate_t", "Magick::CoordinateList *|std::vector< Magick::Coordinate > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__vectorT_Magick__Drawable_t = {"_p_std__vectorT_Magick__Drawable_t", "Magick::DrawableList *|std::vector< Magick::Drawable > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__vectorT_Magick__PathArcArgs_t = {"_p_std__vectorT_Magick__PathArcArgs_t", "Magick::PathArcArgsList *|std::vector< Magick::PathArcArgs > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__vectorT_Magick__PathCurvetoArgs_t = {"_p_std__vectorT_Magick__PathCurvetoArgs_t", "Magick::PathCurveToArgsList *|std::vector< Magick::PathCurvetoArgs > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t = {"_p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t", "Magick::PathQuadraticCurvetoArgsList *|std::vector< Magick::PathQuadraticCurvetoArgs > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__vectorT_Magick__VPath_t = {"_p_std__vectorT_Magick__VPath_t", "Magick::VPathList *|std::vector< Magick::VPath > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_uintptr_t = {"_p_uintptr_t", "MagickCore::MagickAddressType *|uintptr_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "MagickCore::MagickStatusType *|unsigned int *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_unsigned_long_long = {"_p_unsigned_long_long", "MagickCore::MagickSizeType *|unsigned long long *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0};

static swig_type_info *swig_type_initial[] = {
  &_swigt__p_FILE,
  &_swigt__p_ImageListContainer,
  &_swigt__p_ImageListIterator,
  &_swigt__p_MagickCore__AlignType,
  &_swigt__p_MagickCore__CacheType,
  &_swigt__p_MagickCore__ChannelType,
  &_swigt__p_MagickCore__ClassType,
  &_swigt__p_MagickCore__ColorspaceType,
  &_swigt__p_MagickCore__ComplexOperator,
  &_swigt__p_MagickCore__ComplianceType,
  &_swigt__p_MagickCore__CompositeOperator,
  &_swigt__p_MagickCore__CompressionType,
  &_swigt__p_MagickCore__DecorationType,
  &_swigt__p_MagickCore__DirectionType,
  &_swigt__p_MagickCore__DisposeType,
  &_swigt__p_MagickCore__EndianType,
  &_swigt__p_MagickCore__ExceptionType,
  &_swigt__p_MagickCore__FilterType,
  &_swigt__p_MagickCore__GradientType,
  &_swigt__p_MagickCore__GravityType,
  &_swigt__p_MagickCore__IlluminantType,
  &_swigt__p_MagickCore__ImageType,
  &_swigt__p_MagickCore__InterlaceType,
  &_swigt__p_MagickCore__KernelInfoType,
  &_swigt__p_MagickCore__LogEventType,
  &_swigt__p_MagickCore__MagickBooleanType,
  &_swigt__p_MagickCore__MagickCLDeviceType,
  &_swigt__p_MagickCore__MagickEvaluateOperator,
  &_swigt__p_MagickCore__MagickFormatType,
  &_swigt__p_MagickCore__MagickModuleType,
  &_swigt__p_MagickCore__MetricType,
  &_swigt__p_MagickCore__NoiseType,
  &_swigt__p_MagickCore__OrientationType,
  &_swigt__p_MagickCore__PathType,
  &_swigt__p_MagickCore__PolicyDomain,
  &_swigt__p_MagickCore__PolicyRights,
  &_swigt__p_MagickCore__PreviewType,
  &_swigt__p_MagickCore__PrimitiveType,
  &_swigt__p_MagickCore__QuantumAlphaType,
  &_swigt__p_MagickCore__QuantumFormatType,
  &_swigt__p_MagickCore__QuantumType,
  &_swigt__p_MagickCore__ReferenceType,
  &_swigt__p_MagickCore__RegistryType,
  &_swigt__p_MagickCore__ResolutionType,
  &_swigt__p_MagickCore__ResourceType,
  &_swigt__p_MagickCore__StatisticType,
  &_swigt__p_MagickCore__StorageType,
  &_swigt__p_MagickCore__StretchType,
  &_swigt__p_MagickCore__StyleType,
  &_swigt__p_MagickCore__TransmitType,
  &_swigt__p_MagickCore__ValidateType,
  &_swigt__p_MagickCore__WordBreakType,
  &_swigt__p_MagickCore___ChannelMoments,
  &_swigt__p_MagickCore___ChannelPerceptualHash,
  &_swigt__p_MagickCore___ChannelStatistics,
  &_swigt__p_MagickCore___ExceptionInfo,
  &_swigt__p_MagickCore___Image,
  &_swigt__p_MagickCore___ImageInfo,
  &_swigt__p_MagickCore___MontageInfo,
  &_swigt__p_MagickCore___QuantizeInfo,
  &_swigt__p_MagickCore___RectangleInfo,
  &_swigt__p_MagickWand,
  &_swigt__p_Magick__Blob,
  &_swigt__p_Magick__ChannelMoments,
  &_swigt__p_Magick__ChannelPerceptualHash,
  &_swigt__p_Magick__ChannelStatistics,
  &_swigt__p_Magick__CoderInfo,
  &_swigt__p_Magick__Color,
  &_swigt__p_Magick__ColorCMYK,
  &_swigt__p_Magick__ColorGray,
  &_swigt__p_Magick__ColorHSL,
  &_swigt__p_Magick__ColorMono,
  &_swigt__p_Magick__ColorRGB,
  &_swigt__p_Magick__ColorYUV,
  &_swigt__p_Magick__Coordinate,
  &_swigt__p_Magick__Drawable,
  &_swigt__p_Magick__DrawableAffine,
  &_swigt__p_Magick__DrawableAlpha,
  &_swigt__p_Magick__DrawableArc,
  &_swigt__p_Magick__DrawableBase,
  &_swigt__p_Magick__DrawableBezier,
  &_swigt__p_Magick__DrawableBorderColor,
  &_swigt__p_Magick__DrawableCircle,
  &_swigt__p_Magick__DrawableClipPath,
  &_swigt__p_Magick__DrawableClipRule,
  &_swigt__p_Magick__DrawableClipUnits,
  &_swigt__p_Magick__DrawableColor,
  &_swigt__p_Magick__DrawableCompositeImage,
  &_swigt__p_Magick__DrawableDensity,
  &_swigt__p_Magick__DrawableEllipse,
  &_swigt__p_Magick__DrawableFillColor,
  &_swigt__p_Magick__DrawableFillOpacity,
  &_swigt__p_Magick__DrawableFillPatternUrl,
  &_swigt__p_Magick__DrawableFillRule,
  &_swigt__p_Magick__DrawableFont,
  &_swigt__p_Magick__DrawableGravity,
  &_swigt__p_Magick__DrawableLine,
  &_swigt__p_Magick__DrawableMiterLimit,
  &_swigt__p_Magick__DrawablePath,
  &_swigt__p_Magick__DrawablePoint,
  &_swigt__p_Magick__DrawablePointSize,
  &_swigt__p_Magick__DrawablePolygon,
  &_swigt__p_Magick__DrawablePolyline,
  &_swigt__p_Magick__DrawablePopClipPath,
  &_swigt__p_Magick__DrawablePopGraphicContext,
  &_swigt__p_Magick__DrawablePopPattern,
  &_swigt__p_Magick__DrawablePushClipPath,
  &_swigt__p_Magick__DrawablePushGraphicContext,
  &_swigt__p_Magick__DrawablePushPattern,
  &_swigt__p_Magick__DrawableRectangle,
  &_swigt__p_Magick__DrawableRotation,
  &_swigt__p_Magick__DrawableRoundRectangle,
  &_swigt__p_Magick__DrawableScaling,
  &_swigt__p_Magick__DrawableSkewX,
  &_swigt__p_Magick__DrawableSkewY,
  &_swigt__p_Magick__DrawableStrokeAntialias,
  &_swigt__p_Magick__DrawableStrokeColor,
  &_swigt__p_Magick__DrawableStrokeDashArray,
  &_swigt__p_Magick__DrawableStrokeDashOffset,
  &_swigt__p_Magick__DrawableStrokeLineCap,
  &_swigt__p_Magick__DrawableStrokeLineJoin,
  &_swigt__p_Magick__DrawableStrokeOpacity,
  &_swigt__p_Magick__DrawableStrokePatternUrl,
  &_swigt__p_Magick__DrawableStrokeWidth,
  &_swigt__p_Magick__DrawableText,
  &_swigt__p_Magick__DrawableTextAlignment,
  &_swigt__p_Magick__DrawableTextAntialias,
  &_swigt__p_Magick__DrawableTextDecoration,
  &_swigt__p_Magick__DrawableTextDirection,
  &_swigt__p_Magick__DrawableTextInterlineSpacing,
  &_swigt__p_Magick__DrawableTextInterwordSpacing,
  &_swigt__p_Magick__DrawableTextKerning,
  &_swigt__p_Magick__DrawableTextUnderColor,
  &_swigt__p_Magick__DrawableTranslation,
  &_swigt__p_Magick__DrawableViewbox,
  &_swigt__p_Magick__Error,
  &_swigt__p_Magick__ErrorBlob,
  &_swigt__p_Magick__ErrorCache,
  &_swigt__p_Magick__ErrorCoder,
  &_swigt__p_Magick__ErrorConfigure,
  &_swigt__p_Magick__ErrorCorruptImage,
  &_swigt__p_Magick__ErrorDelegate,
  &_swigt__p_Magick__ErrorDraw,
  &_swigt__p_Magick__ErrorFileOpen,
  &_swigt__p_Magick__ErrorImage,
  &_swigt__p_Magick__ErrorMissingDelegate,
  &_swigt__p_Magick__ErrorModule,
  &_swigt__p_Magick__ErrorMonitor,
  &_swigt__p_Magick__ErrorOption,
  &_swigt__p_Magick__ErrorPolicy,
  &_swigt__p_Magick__ErrorRegistry,
  &_swigt__p_Magick__ErrorResourceLimit,
  &_swigt__p_Magick__ErrorStream,
  &_swigt__p_Magick__ErrorType,
  &_swigt__p_Magick__ErrorUndefined,
  &_swigt__p_Magick__ErrorXServer,
  &_swigt__p_Magick__Exception,
  &_swigt__p_Magick__Geometry,
  &_swigt__p_Magick__Image,
  &_swigt__p_Magick__ImageMoments,
  &_swigt__p_Magick__ImagePerceptualHash,
  &_swigt__p_Magick__ImageStatistics,
  &_swigt__p_Magick__Montage,
  &_swigt__p_Magick__MontageFramed,
  &_swigt__p_Magick__Offset,
  &_swigt__p_Magick__Options,
  &_swigt__p_Magick__PathArcAbs,
  &_swigt__p_Magick__PathArcArgs,
  &_swigt__p_Magick__PathArcRel,
  &_swigt__p_Magick__PathClosePath,
  &_swigt__p_Magick__PathCurvetoAbs,
  &_swigt__p_Magick__PathCurvetoArgs,
  &_swigt__p_Magick__PathCurvetoRel,
  &_swigt__p_Magick__PathLinetoAbs,
  &_swigt__p_Magick__PathLinetoHorizontalAbs,
  &_swigt__p_Magick__PathLinetoHorizontalRel,
  &_swigt__p_Magick__PathLinetoRel,
  &_swigt__p_Magick__PathLinetoVerticalAbs,
  &_swigt__p_Magick__PathLinetoVerticalRel,
  &_swigt__p_Magick__PathMovetoAbs,
  &_swigt__p_Magick__PathMovetoRel,
  &_swigt__p_Magick__PathQuadraticCurvetoAbs,
  &_swigt__p_Magick__PathQuadraticCurvetoArgs,
  &_swigt__p_Magick__PathQuadraticCurvetoRel,
  &_swigt__p_Magick__PathSmoothCurvetoAbs,
  &_swigt__p_Magick__PathSmoothCurvetoRel,
  &_swigt__p_Magick__PathSmoothQuadraticCurvetoAbs,
  &_swigt__p_Magick__PathSmoothQuadraticCurvetoRel,
  &_swigt__p_Magick__Point,
  &_swigt__p_Magick__ReadOptions,
  &_swigt__p_Magick__ResourceLimits,
  &_swigt__p_Magick__TypeMetric,
  &_swigt__p_Magick__VPath,
  &_swigt__p_Magick__VPathBase,
  &_swigt__p_Magick__Warning,
  &_swigt__p_Magick__WarningBlob,
  &_swigt__p_Magick__WarningCache,
  &_swigt__p_Magick__WarningCoder,
  &_swigt__p_Magick__WarningConfigure,
  &_swigt__p_Magick__WarningCorruptImage,
  &_swigt__p_Magick__WarningDelegate,
  &_swigt__p_Magick__WarningDraw,
  &_swigt__p_Magick__WarningFileOpen,
  &_swigt__p_Magick__WarningImage,
  &_swigt__p_Magick__WarningMissingDelegate,
  &_swigt__p_Magick__WarningModule,
  &_swigt__p_Magick__WarningMonitor,
  &_swigt__p_Magick__WarningOption,
  &_swigt__p_Magick__WarningPolicy,
  &_swigt__p_Magick__WarningRegistry,
  &_swigt__p_Magick__WarningResourceLimit,
  &_swigt__p_Magick__WarningStream,
  &_swigt__p_Magick__WarningType,
  &_swigt__p_Magick__WarningUndefined,
  &_swigt__p_Magick__WarningXServer,
  &_swigt__p_Magick__adaptiveBlurImage,
  &_swigt__p_Magick__adaptiveThresholdImage,
  &_swigt__p_Magick__addNoiseImage,
  &_swigt__p_Magick__adjoinImage,
  &_swigt__p_Magick__affineTransformImage,
  &_swigt__p_Magick__alphaFlagImage,
  &_swigt__p_Magick__alphaImage,
  &_swigt__p_Magick__animationDelayImage,
  &_swigt__p_Magick__animationIterationsImage,
  &_swigt__p_Magick__annotateImage,
  &_swigt__p_Magick__backgroundColorImage,
  &_swigt__p_Magick__backgroundTextureImage,
  &_swigt__p_Magick__blurImage,
  &_swigt__p_Magick__borderColorImage,
  &_swigt__p_Magick__borderImage,
  &_swigt__p_Magick__boxColorImage,
  &_swigt__p_Magick__cdlImage,
  &_swigt__p_Magick__channelImage,
  &_swigt__p_Magick__charcoalImage,
  &_swigt__p_Magick__chopImage,
  &_swigt__p_Magick__chromaBluePrimaryImage,
  &_swigt__p_Magick__chromaGreenPrimaryImage,
  &_swigt__p_Magick__chromaRedPrimaryImage,
  &_swigt__p_Magick__chromaWhitePointImage,
  &_swigt__p_Magick__colorFuzzImage,
  &_swigt__p_Magick__colorMapImage,
  &_swigt__p_Magick__colorMatrixImage,
  &_swigt__p_Magick__colorSpaceImage,
  &_swigt__p_Magick__colorizeImage,
  &_swigt__p_Magick__commentImage,
  &_swigt__p_Magick__composeImage,
  &_swigt__p_Magick__compositeImage,
  &_swigt__p_Magick__compressTypeImage,
  &_swigt__p_Magick__contrastImage,
  &_swigt__p_Magick__cropImage,
  &_swigt__p_Magick__cycleColormapImage,
  &_swigt__p_Magick__densityImage,
  &_swigt__p_Magick__depthImage,
  &_swigt__p_Magick__despeckleImage,
  &_swigt__p_Magick__distortImage,
  &_swigt__p_Magick__drawImage,
  &_swigt__p_Magick__edgeImage,
  &_swigt__p_Magick__embossImage,
  &_swigt__p_Magick__endianImage,
  &_swigt__p_Magick__enhanceImage,
  &_swigt__p_Magick__equalizeImage,
  &_swigt__p_Magick__fileNameImage,
  &_swigt__p_Magick__fillColorImage,
  &_swigt__p_Magick__filterTypeImage,
  &_swigt__p_Magick__flipImage,
  &_swigt__p_Magick__floodFillAlphaImage,
  &_swigt__p_Magick__floodFillColorImage,
  &_swigt__p_Magick__floodFillTextureImage,
  &_swigt__p_Magick__flopImage,
  &_swigt__p_Magick__fontImage,
  &_swigt__p_Magick__fontPointsizeImage,
  &_swigt__p_Magick__frameImage,
  &_swigt__p_Magick__gammaImage,
  &_swigt__p_Magick__gaussianBlurImage,
  &_swigt__p_Magick__gifDisposeMethodImage,
  &_swigt__p_Magick__haldClutImage,
  &_swigt__p_Magick__implodeImage,
  &_swigt__p_Magick__interlaceTypeImage,
  &_swigt__p_Magick__inverseFourierTransformImage,
  &_swigt__p_Magick__isValidImage,
  &_swigt__p_Magick__labelImage,
  &_swigt__p_Magick__levelImage,
  &_swigt__p_Magick__magickImage,
  &_swigt__p_Magick__magnifyImage,
  &_swigt__p_Magick__mapImage,
  &_swigt__p_Magick__matteColorImage,
  &_swigt__p_Magick__medianConvolveImage,
  &_swigt__p_Magick__minifyImage,
  &_swigt__p_Magick__modulateImage,
  &_swigt__p_Magick__monochromeImage,
  &_swigt__p_Magick__negateImage,
  &_swigt__p_Magick__normalizeImage,
  &_swigt__p_Magick__oilPaintImage,
  &_swigt__p_Magick__opaqueImage,
  &_swigt__p_Magick__pageImage,
  &_swigt__p_Magick__pixelColorImage,
  &_swigt__p_Magick__qualityImage,
  &_swigt__p_Magick__quantizeColorSpaceImage,
  &_swigt__p_Magick__quantizeColorsImage,
  &_swigt__p_Magick__quantizeDitherImage,
  &_swigt__p_Magick__quantizeImage,
  &_swigt__p_Magick__quantizeTreeDepthImage,
  &_swigt__p_Magick__raiseImage,
  &_swigt__p_Magick__reduceNoiseImage,
  &_swigt__p_Magick__renderingIntentImage,
  &_swigt__p_Magick__resizeImage,
  &_swigt__p_Magick__resolutionUnitsImage,
  &_swigt__p_Magick__rollImage,
  &_swigt__p_Magick__rotateImage,
  &_swigt__p_Magick__sampleImage,
  &_swigt__p_Magick__scaleImage,
  &_swigt__p_Magick__sceneImage,
  &_swigt__p_Magick__segmentImage,
  &_swigt__p_Magick__shadeImage,
  &_swigt__p_Magick__shadowImage,
  &_swigt__p_Magick__sharpenImage,
  &_swigt__p_Magick__shaveImage,
  &_swigt__p_Magick__shearImage,
  &_swigt__p_Magick__sizeImage,
  &_swigt__p_Magick__solarizeImage,
  &_swigt__p_Magick__spliceImage,
  &_swigt__p_Magick__spreadImage,
  &_swigt__p_Magick__steganoImage,
  &_swigt__p_Magick__stereoImage,
  &_swigt__p_Magick__stripImage,
  &_swigt__p_Magick__strokeColorImage,
  &_swigt__p_Magick__subImageImage,
  &_swigt__p_Magick__subRangeImage,
  &_swigt__p_Magick__swirlImage,
  &_swigt__p_Magick__textAntiAliasImage,
  &_swigt__p_Magick__textureImage,
  &_swigt__p_Magick__thresholdImage,
  &_swigt__p_Magick__transparentImage,
  &_swigt__p_Magick__trimImage,
  &_swigt__p_Magick__typeImage,
  &_swigt__p_Magick__verboseImage,
  &_swigt__p_Magick__waveImage,
  &_swigt__p_Magick__x11DisplayImage,
  &_swigt__p_Magick__zoomImage,
  &_swigt__p__DrawingWand,
  &_swigt__p__PolicyInfo,
  &_swigt__p_char,
  &_swigt__p_difference_type,
  &_swigt__p_double,
  &_swigt__p_float,
  &_swigt__p_long_long,
  &_swigt__p_p_MagickCore___Image,
  &_swigt__p_p_char,
  &_swigt__p_p_void,
  &_swigt__p_size_t,
  &_swigt__p_size_type,
  &_swigt__p_std__exception,
  &_swigt__p_std__vectorT_Magick__CoderInfo_t,
  &_swigt__p_std__vectorT_Magick__Coordinate_t,
  &_swigt__p_std__vectorT_Magick__Drawable_t,
  &_swigt__p_std__vectorT_Magick__PathArcArgs_t,
  &_swigt__p_std__vectorT_Magick__PathCurvetoArgs_t,
  &_swigt__p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t,
  &_swigt__p_std__vectorT_Magick__VPath_t,
  &_swigt__p_uintptr_t,
  &_swigt__p_unsigned_char,
  &_swigt__p_unsigned_int,
  &_swigt__p_unsigned_long_long,
  &_swigt__p_value_type,
  &_swigt__p_void,
};

static swig_cast_info _swigc__p_FILE[] = {  {&_swigt__p_FILE, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ImageListContainer[] = {  {&_swigt__p_ImageListContainer, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_ImageListIterator[] = {  {&_swigt__p_ImageListIterator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__AlignType[] = {  {&_swigt__p_MagickCore__AlignType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__CacheType[] = {  {&_swigt__p_MagickCore__CacheType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ChannelType[] = {  {&_swigt__p_MagickCore__ChannelType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ClassType[] = {  {&_swigt__p_MagickCore__ClassType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ColorspaceType[] = {  {&_swigt__p_MagickCore__ColorspaceType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ComplexOperator[] = {  {&_swigt__p_MagickCore__ComplexOperator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ComplianceType[] = {  {&_swigt__p_MagickCore__ComplianceType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__CompositeOperator[] = {  {&_swigt__p_MagickCore__CompositeOperator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__CompressionType[] = {  {&_swigt__p_MagickCore__CompressionType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__DecorationType[] = {  {&_swigt__p_MagickCore__DecorationType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__DirectionType[] = {  {&_swigt__p_MagickCore__DirectionType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__DisposeType[] = {  {&_swigt__p_MagickCore__DisposeType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__EndianType[] = {  {&_swigt__p_MagickCore__EndianType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ExceptionType[] = {  {&_swigt__p_MagickCore__ExceptionType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__FilterType[] = {  {&_swigt__p_MagickCore__FilterType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__GradientType[] = {  {&_swigt__p_MagickCore__GradientType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__GravityType[] = {  {&_swigt__p_MagickCore__GravityType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__IlluminantType[] = {  {&_swigt__p_MagickCore__IlluminantType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ImageType[] = {  {&_swigt__p_MagickCore__ImageType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__InterlaceType[] = {  {&_swigt__p_MagickCore__InterlaceType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__KernelInfoType[] = {  {&_swigt__p_MagickCore__KernelInfoType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__LogEventType[] = {  {&_swigt__p_MagickCore__LogEventType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__MagickBooleanType[] = {  {&_swigt__p_MagickCore__MagickBooleanType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__MagickCLDeviceType[] = {  {&_swigt__p_MagickCore__MagickCLDeviceType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__MagickEvaluateOperator[] = {  {&_swigt__p_MagickCore__MagickEvaluateOperator, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__MagickFormatType[] = {  {&_swigt__p_MagickCore__MagickFormatType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__MagickModuleType[] = {  {&_swigt__p_MagickCore__MagickModuleType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__MetricType[] = {  {&_swigt__p_MagickCore__MetricType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__NoiseType[] = {  {&_swigt__p_MagickCore__NoiseType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__OrientationType[] = {  {&_swigt__p_MagickCore__OrientationType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__PathType[] = {  {&_swigt__p_MagickCore__PathType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__PolicyDomain[] = {  {&_swigt__p_MagickCore__PolicyDomain, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__PolicyRights[] = {  {&_swigt__p_MagickCore__PolicyRights, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__PreviewType[] = {  {&_swigt__p_MagickCore__PreviewType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__PrimitiveType[] = {  {&_swigt__p_MagickCore__PrimitiveType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__QuantumAlphaType[] = {  {&_swigt__p_MagickCore__QuantumAlphaType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__QuantumFormatType[] = {  {&_swigt__p_MagickCore__QuantumFormatType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__QuantumType[] = {  {&_swigt__p_MagickCore__QuantumType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ReferenceType[] = {  {&_swigt__p_MagickCore__ReferenceType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__RegistryType[] = {  {&_swigt__p_MagickCore__RegistryType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ResolutionType[] = {  {&_swigt__p_MagickCore__ResolutionType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ResourceType[] = {  {&_swigt__p_MagickCore__ResourceType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__StatisticType[] = {  {&_swigt__p_MagickCore__StatisticType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__StorageType[] = {  {&_swigt__p_MagickCore__StorageType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__StretchType[] = {  {&_swigt__p_MagickCore__StretchType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__StyleType[] = {  {&_swigt__p_MagickCore__StyleType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__TransmitType[] = {  {&_swigt__p_MagickCore__TransmitType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__ValidateType[] = {  {&_swigt__p_MagickCore__ValidateType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore__WordBreakType[] = {  {&_swigt__p_MagickCore__WordBreakType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___ChannelMoments[] = {  {&_swigt__p_MagickCore___ChannelMoments, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___ChannelPerceptualHash[] = {  {&_swigt__p_MagickCore___ChannelPerceptualHash, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___ChannelStatistics[] = {  {&_swigt__p_MagickCore___ChannelStatistics, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___ExceptionInfo[] = {  {&_swigt__p_MagickCore___ExceptionInfo, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___Image[] = {  {&_swigt__p_MagickCore___Image, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___ImageInfo[] = {  {&_swigt__p_MagickCore___ImageInfo, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___MontageInfo[] = {  {&_swigt__p_MagickCore___MontageInfo, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___QuantizeInfo[] = {  {&_swigt__p_MagickCore___QuantizeInfo, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickCore___RectangleInfo[] = {  {&_swigt__p_MagickCore___RectangleInfo, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_MagickWand[] = {  {&_swigt__p_MagickWand, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Blob[] = {  {&_swigt__p_Magick__Blob, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ChannelMoments[] = {  {&_swigt__p_Magick__ChannelMoments, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ChannelPerceptualHash[] = {  {&_swigt__p_Magick__ChannelPerceptualHash, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ChannelStatistics[] = {  {&_swigt__p_Magick__ChannelStatistics, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__CoderInfo[] = {  {&_swigt__p_Magick__CoderInfo, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Color[] = {  {&_swigt__p_Magick__Color, 0, 0, 0},  {&_swigt__p_Magick__ColorCMYK, _p_Magick__ColorCMYKTo_p_Magick__Color, 0, 0},  {&_swigt__p_Magick__ColorGray, _p_Magick__ColorGrayTo_p_Magick__Color, 0, 0},  {&_swigt__p_Magick__ColorHSL, _p_Magick__ColorHSLTo_p_Magick__Color, 0, 0},  {&_swigt__p_Magick__ColorMono, _p_Magick__ColorMonoTo_p_Magick__Color, 0, 0},  {&_swigt__p_Magick__ColorRGB, _p_Magick__ColorRGBTo_p_Magick__Color, 0, 0},  {&_swigt__p_Magick__ColorYUV, _p_Magick__ColorYUVTo_p_Magick__Color, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ColorCMYK[] = {  {&_swigt__p_Magick__ColorCMYK, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ColorGray[] = {  {&_swigt__p_Magick__ColorGray, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ColorHSL[] = {  {&_swigt__p_Magick__ColorHSL, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ColorMono[] = {  {&_swigt__p_Magick__ColorMono, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ColorRGB[] = {  {&_swigt__p_Magick__ColorRGB, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ColorYUV[] = {  {&_swigt__p_Magick__ColorYUV, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Coordinate[] = {  {&_swigt__p_Magick__Coordinate, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Drawable[] = {  {&_swigt__p_Magick__Drawable, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableAffine[] = {  {&_swigt__p_Magick__DrawableAffine, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableAlpha[] = {  {&_swigt__p_Magick__DrawableAlpha, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableArc[] = {  {&_swigt__p_Magick__DrawableArc, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableBase[] = {  {&_swigt__p_Magick__DrawableBase, 0, 0, 0},  {&_swigt__p_Magick__DrawableAffine, _p_Magick__DrawableAffineTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableAlpha, _p_Magick__DrawableAlphaTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableArc, _p_Magick__DrawableArcTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableBezier, _p_Magick__DrawableBezierTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableBorderColor, _p_Magick__DrawableBorderColorTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableCircle, _p_Magick__DrawableCircleTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableClipPath, _p_Magick__DrawableClipPathTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableClipRule, _p_Magick__DrawableClipRuleTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableClipUnits, _p_Magick__DrawableClipUnitsTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableColor, _p_Magick__DrawableColorTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableCompositeImage, _p_Magick__DrawableCompositeImageTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableDensity, _p_Magick__DrawableDensityTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableEllipse, _p_Magick__DrawableEllipseTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableFillColor, _p_Magick__DrawableFillColorTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableFillOpacity, _p_Magick__DrawableFillOpacityTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableFillPatternUrl, _p_Magick__DrawableFillPatternUrlTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableFillRule, _p_Magick__DrawableFillRuleTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableFont, _p_Magick__DrawableFontTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableGravity, _p_Magick__DrawableGravityTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableLine, _p_Magick__DrawableLineTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableMiterLimit, _p_Magick__DrawableMiterLimitTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePath, _p_Magick__DrawablePathTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePoint, _p_Magick__DrawablePointTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePointSize, _p_Magick__DrawablePointSizeTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePolygon, _p_Magick__DrawablePolygonTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePolyline, _p_Magick__DrawablePolylineTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePopClipPath, _p_Magick__DrawablePopClipPathTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePopGraphicContext, _p_Magick__DrawablePopGraphicContextTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePopPattern, _p_Magick__DrawablePopPatternTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePushClipPath, _p_Magick__DrawablePushClipPathTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePushGraphicContext, _p_Magick__DrawablePushGraphicContextTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawablePushPattern, _p_Magick__DrawablePushPatternTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableRectangle, _p_Magick__DrawableRectangleTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableRotation, _p_Magick__DrawableRotationTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableRoundRectangle, _p_Magick__DrawableRoundRectangleTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableScaling, _p_Magick__DrawableScalingTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableSkewX, _p_Magick__DrawableSkewXTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableSkewY, _p_Magick__DrawableSkewYTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeAntialias, _p_Magick__DrawableStrokeAntialiasTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeColor, _p_Magick__DrawableStrokeColorTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeDashArray, _p_Magick__DrawableStrokeDashArrayTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeDashOffset, _p_Magick__DrawableStrokeDashOffsetTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeLineCap, _p_Magick__DrawableStrokeLineCapTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeLineJoin, _p_Magick__DrawableStrokeLineJoinTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeOpacity, _p_Magick__DrawableStrokeOpacityTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokePatternUrl, _p_Magick__DrawableStrokePatternUrlTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableStrokeWidth, _p_Magick__DrawableStrokeWidthTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableText, _p_Magick__DrawableTextTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextAlignment, _p_Magick__DrawableTextAlignmentTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextAntialias, _p_Magick__DrawableTextAntialiasTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextDecoration, _p_Magick__DrawableTextDecorationTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextDirection, _p_Magick__DrawableTextDirectionTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextInterlineSpacing, _p_Magick__DrawableTextInterlineSpacingTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextInterwordSpacing, _p_Magick__DrawableTextInterwordSpacingTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextKerning, _p_Magick__DrawableTextKerningTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTextUnderColor, _p_Magick__DrawableTextUnderColorTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableTranslation, _p_Magick__DrawableTranslationTo_p_Magick__DrawableBase, 0, 0},  {&_swigt__p_Magick__DrawableViewbox, _p_Magick__DrawableViewboxTo_p_Magick__DrawableBase, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableBezier[] = {  {&_swigt__p_Magick__DrawableBezier, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableBorderColor[] = {  {&_swigt__p_Magick__DrawableBorderColor, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableCircle[] = {  {&_swigt__p_Magick__DrawableCircle, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableClipPath[] = {  {&_swigt__p_Magick__DrawableClipPath, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableClipRule[] = {  {&_swigt__p_Magick__DrawableClipRule, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableClipUnits[] = {  {&_swigt__p_Magick__DrawableClipUnits, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableColor[] = {  {&_swigt__p_Magick__DrawableColor, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableCompositeImage[] = {  {&_swigt__p_Magick__DrawableCompositeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableDensity[] = {  {&_swigt__p_Magick__DrawableDensity, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableEllipse[] = {  {&_swigt__p_Magick__DrawableEllipse, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableFillColor[] = {  {&_swigt__p_Magick__DrawableFillColor, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableFillOpacity[] = {  {&_swigt__p_Magick__DrawableFillOpacity, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableFillPatternUrl[] = {  {&_swigt__p_Magick__DrawableFillPatternUrl, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableFillRule[] = {  {&_swigt__p_Magick__DrawableFillRule, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableFont[] = {  {&_swigt__p_Magick__DrawableFont, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableGravity[] = {  {&_swigt__p_Magick__DrawableGravity, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableLine[] = {  {&_swigt__p_Magick__DrawableLine, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableMiterLimit[] = {  {&_swigt__p_Magick__DrawableMiterLimit, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePath[] = {  {&_swigt__p_Magick__DrawablePath, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePoint[] = {  {&_swigt__p_Magick__DrawablePoint, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePointSize[] = {  {&_swigt__p_Magick__DrawablePointSize, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePolygon[] = {  {&_swigt__p_Magick__DrawablePolygon, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePolyline[] = {  {&_swigt__p_Magick__DrawablePolyline, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePopClipPath[] = {  {&_swigt__p_Magick__DrawablePopClipPath, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePopGraphicContext[] = {  {&_swigt__p_Magick__DrawablePopGraphicContext, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePopPattern[] = {  {&_swigt__p_Magick__DrawablePopPattern, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePushClipPath[] = {  {&_swigt__p_Magick__DrawablePushClipPath, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePushGraphicContext[] = {  {&_swigt__p_Magick__DrawablePushGraphicContext, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawablePushPattern[] = {  {&_swigt__p_Magick__DrawablePushPattern, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableRectangle[] = {  {&_swigt__p_Magick__DrawableRectangle, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableRotation[] = {  {&_swigt__p_Magick__DrawableRotation, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableRoundRectangle[] = {  {&_swigt__p_Magick__DrawableRoundRectangle, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableScaling[] = {  {&_swigt__p_Magick__DrawableScaling, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableSkewX[] = {  {&_swigt__p_Magick__DrawableSkewX, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableSkewY[] = {  {&_swigt__p_Magick__DrawableSkewY, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeAntialias[] = {  {&_swigt__p_Magick__DrawableStrokeAntialias, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeColor[] = {  {&_swigt__p_Magick__DrawableStrokeColor, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeDashArray[] = {  {&_swigt__p_Magick__DrawableStrokeDashArray, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeDashOffset[] = {  {&_swigt__p_Magick__DrawableStrokeDashOffset, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeLineCap[] = {  {&_swigt__p_Magick__DrawableStrokeLineCap, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeLineJoin[] = {  {&_swigt__p_Magick__DrawableStrokeLineJoin, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeOpacity[] = {  {&_swigt__p_Magick__DrawableStrokeOpacity, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokePatternUrl[] = {  {&_swigt__p_Magick__DrawableStrokePatternUrl, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableStrokeWidth[] = {  {&_swigt__p_Magick__DrawableStrokeWidth, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableText[] = {  {&_swigt__p_Magick__DrawableText, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextAlignment[] = {  {&_swigt__p_Magick__DrawableTextAlignment, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextAntialias[] = {  {&_swigt__p_Magick__DrawableTextAntialias, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextDecoration[] = {  {&_swigt__p_Magick__DrawableTextDecoration, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextDirection[] = {  {&_swigt__p_Magick__DrawableTextDirection, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextInterlineSpacing[] = {  {&_swigt__p_Magick__DrawableTextInterlineSpacing, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextInterwordSpacing[] = {  {&_swigt__p_Magick__DrawableTextInterwordSpacing, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextKerning[] = {  {&_swigt__p_Magick__DrawableTextKerning, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTextUnderColor[] = {  {&_swigt__p_Magick__DrawableTextUnderColor, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableTranslation[] = {  {&_swigt__p_Magick__DrawableTranslation, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__DrawableViewbox[] = {  {&_swigt__p_Magick__DrawableViewbox, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorBlob[] = {{&_swigt__p_Magick__ErrorBlob, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorCache[] = {{&_swigt__p_Magick__ErrorCache, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorCoder[] = {{&_swigt__p_Magick__ErrorCoder, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorConfigure[] = {{&_swigt__p_Magick__ErrorConfigure, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorCorruptImage[] = {{&_swigt__p_Magick__ErrorCorruptImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorDelegate[] = {{&_swigt__p_Magick__ErrorDelegate, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorDraw[] = {{&_swigt__p_Magick__ErrorDraw, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorFileOpen[] = {{&_swigt__p_Magick__ErrorFileOpen, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorImage[] = {{&_swigt__p_Magick__ErrorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorMissingDelegate[] = {{&_swigt__p_Magick__ErrorMissingDelegate, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorModule[] = {{&_swigt__p_Magick__ErrorModule, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorMonitor[] = {{&_swigt__p_Magick__ErrorMonitor, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorOption[] = {{&_swigt__p_Magick__ErrorOption, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorRegistry[] = {{&_swigt__p_Magick__ErrorRegistry, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorResourceLimit[] = {{&_swigt__p_Magick__ErrorResourceLimit, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorStream[] = {{&_swigt__p_Magick__ErrorStream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorUndefined[] = {{&_swigt__p_Magick__ErrorUndefined, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorXServer[] = {{&_swigt__p_Magick__ErrorXServer, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Error[] = {  {&_swigt__p_Magick__Error, 0, 0, 0},  {&_swigt__p_Magick__ErrorBlob, _p_Magick__ErrorBlobTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorCache, _p_Magick__ErrorCacheTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorCoder, _p_Magick__ErrorCoderTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorConfigure, _p_Magick__ErrorConfigureTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorCorruptImage, _p_Magick__ErrorCorruptImageTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorDelegate, _p_Magick__ErrorDelegateTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorDraw, _p_Magick__ErrorDrawTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorFileOpen, _p_Magick__ErrorFileOpenTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorImage, _p_Magick__ErrorImageTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorMissingDelegate, _p_Magick__ErrorMissingDelegateTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorModule, _p_Magick__ErrorModuleTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorMonitor, _p_Magick__ErrorMonitorTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorOption, _p_Magick__ErrorOptionTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorPolicy, _p_Magick__ErrorPolicyTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorRegistry, _p_Magick__ErrorRegistryTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorResourceLimit, _p_Magick__ErrorResourceLimitTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorStream, _p_Magick__ErrorStreamTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorType, _p_Magick__ErrorTypeTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorUndefined, _p_Magick__ErrorUndefinedTo_p_Magick__Error, 0, 0},  {&_swigt__p_Magick__ErrorXServer, _p_Magick__ErrorXServerTo_p_Magick__Error, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorPolicy[] = {  {&_swigt__p_Magick__ErrorPolicy, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ErrorType[] = {  {&_swigt__p_Magick__ErrorType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningBlob[] = {{&_swigt__p_Magick__WarningBlob, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningCache[] = {{&_swigt__p_Magick__WarningCache, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningCoder[] = {{&_swigt__p_Magick__WarningCoder, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningConfigure[] = {{&_swigt__p_Magick__WarningConfigure, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningCorruptImage[] = {{&_swigt__p_Magick__WarningCorruptImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningDelegate[] = {{&_swigt__p_Magick__WarningDelegate, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningDraw[] = {{&_swigt__p_Magick__WarningDraw, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningFileOpen[] = {{&_swigt__p_Magick__WarningFileOpen, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningImage[] = {{&_swigt__p_Magick__WarningImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningMissingDelegate[] = {{&_swigt__p_Magick__WarningMissingDelegate, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningModule[] = {{&_swigt__p_Magick__WarningModule, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningMonitor[] = {{&_swigt__p_Magick__WarningMonitor, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningOption[] = {{&_swigt__p_Magick__WarningOption, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningRegistry[] = {{&_swigt__p_Magick__WarningRegistry, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningResourceLimit[] = {{&_swigt__p_Magick__WarningResourceLimit, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningStream[] = {{&_swigt__p_Magick__WarningStream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningUndefined[] = {{&_swigt__p_Magick__WarningUndefined, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningXServer[] = {{&_swigt__p_Magick__WarningXServer, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Exception[] = {  {&_swigt__p_Magick__Exception, 0, 0, 0},  {&_swigt__p_Magick__Error, _p_Magick__ErrorTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorBlob, _p_Magick__ErrorBlobTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorCache, _p_Magick__ErrorCacheTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorCoder, _p_Magick__ErrorCoderTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorConfigure, _p_Magick__ErrorConfigureTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorCorruptImage, _p_Magick__ErrorCorruptImageTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorDelegate, _p_Magick__ErrorDelegateTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorDraw, _p_Magick__ErrorDrawTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorFileOpen, _p_Magick__ErrorFileOpenTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorImage, _p_Magick__ErrorImageTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorMissingDelegate, _p_Magick__ErrorMissingDelegateTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorModule, _p_Magick__ErrorModuleTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorMonitor, _p_Magick__ErrorMonitorTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorOption, _p_Magick__ErrorOptionTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorPolicy, _p_Magick__ErrorPolicyTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorRegistry, _p_Magick__ErrorRegistryTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorResourceLimit, _p_Magick__ErrorResourceLimitTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorStream, _p_Magick__ErrorStreamTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorType, _p_Magick__ErrorTypeTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorUndefined, _p_Magick__ErrorUndefinedTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__ErrorXServer, _p_Magick__ErrorXServerTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__Warning, _p_Magick__WarningTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningBlob, _p_Magick__WarningBlobTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningCache, _p_Magick__WarningCacheTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningCoder, _p_Magick__WarningCoderTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningConfigure, _p_Magick__WarningConfigureTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningCorruptImage, _p_Magick__WarningCorruptImageTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningDelegate, _p_Magick__WarningDelegateTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningDraw, _p_Magick__WarningDrawTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningFileOpen, _p_Magick__WarningFileOpenTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningImage, _p_Magick__WarningImageTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningMissingDelegate, _p_Magick__WarningMissingDelegateTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningModule, _p_Magick__WarningModuleTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningMonitor, _p_Magick__WarningMonitorTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningOption, _p_Magick__WarningOptionTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningPolicy, _p_Magick__WarningPolicyTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningRegistry, _p_Magick__WarningRegistryTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningResourceLimit, _p_Magick__WarningResourceLimitTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningStream, _p_Magick__WarningStreamTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningType, _p_Magick__WarningTypeTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningUndefined, _p_Magick__WarningUndefinedTo_p_Magick__Exception, 0, 0},  {&_swigt__p_Magick__WarningXServer, _p_Magick__WarningXServerTo_p_Magick__Exception, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Geometry[] = {  {&_swigt__p_Magick__Geometry, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Image[] = {  {&_swigt__p_Magick__Image, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ImageMoments[] = {  {&_swigt__p_Magick__ImageMoments, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ImagePerceptualHash[] = {  {&_swigt__p_Magick__ImagePerceptualHash, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ImageStatistics[] = {  {&_swigt__p_Magick__ImageStatistics, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Montage[] = {  {&_swigt__p_Magick__Montage, 0, 0, 0},  {&_swigt__p_Magick__MontageFramed, _p_Magick__MontageFramedTo_p_Magick__Montage, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__MontageFramed[] = {  {&_swigt__p_Magick__MontageFramed, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Offset[] = {  {&_swigt__p_Magick__Offset, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Options[] = {  {&_swigt__p_Magick__Options, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathArcAbs[] = {  {&_swigt__p_Magick__PathArcAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathArcArgs[] = {  {&_swigt__p_Magick__PathArcArgs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathArcRel[] = {  {&_swigt__p_Magick__PathArcRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathClosePath[] = {  {&_swigt__p_Magick__PathClosePath, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathCurvetoAbs[] = {  {&_swigt__p_Magick__PathCurvetoAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathCurvetoArgs[] = {  {&_swigt__p_Magick__PathCurvetoArgs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathCurvetoRel[] = {  {&_swigt__p_Magick__PathCurvetoRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathLinetoAbs[] = {  {&_swigt__p_Magick__PathLinetoAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathLinetoHorizontalAbs[] = {  {&_swigt__p_Magick__PathLinetoHorizontalAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathLinetoHorizontalRel[] = {  {&_swigt__p_Magick__PathLinetoHorizontalRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathLinetoRel[] = {  {&_swigt__p_Magick__PathLinetoRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathLinetoVerticalAbs[] = {  {&_swigt__p_Magick__PathLinetoVerticalAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathLinetoVerticalRel[] = {  {&_swigt__p_Magick__PathLinetoVerticalRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathMovetoAbs[] = {  {&_swigt__p_Magick__PathMovetoAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathMovetoRel[] = {  {&_swigt__p_Magick__PathMovetoRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathQuadraticCurvetoAbs[] = {  {&_swigt__p_Magick__PathQuadraticCurvetoAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathQuadraticCurvetoArgs[] = {  {&_swigt__p_Magick__PathQuadraticCurvetoArgs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathQuadraticCurvetoRel[] = {  {&_swigt__p_Magick__PathQuadraticCurvetoRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathSmoothCurvetoAbs[] = {  {&_swigt__p_Magick__PathSmoothCurvetoAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathSmoothCurvetoRel[] = {  {&_swigt__p_Magick__PathSmoothCurvetoRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathSmoothQuadraticCurvetoAbs[] = {  {&_swigt__p_Magick__PathSmoothQuadraticCurvetoAbs, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__PathSmoothQuadraticCurvetoRel[] = {  {&_swigt__p_Magick__PathSmoothQuadraticCurvetoRel, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Point[] = {  {&_swigt__p_Magick__Point, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ReadOptions[] = {  {&_swigt__p_Magick__ReadOptions, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__ResourceLimits[] = {  {&_swigt__p_Magick__ResourceLimits, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__TypeMetric[] = {  {&_swigt__p_Magick__TypeMetric, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__VPath[] = {  {&_swigt__p_Magick__VPath, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__VPathBase[] = {  {&_swigt__p_Magick__VPathBase, 0, 0, 0},  {&_swigt__p_Magick__PathArcAbs, _p_Magick__PathArcAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathArcRel, _p_Magick__PathArcRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathClosePath, _p_Magick__PathClosePathTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathCurvetoAbs, _p_Magick__PathCurvetoAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathCurvetoRel, _p_Magick__PathCurvetoRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathLinetoAbs, _p_Magick__PathLinetoAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathLinetoHorizontalAbs, _p_Magick__PathLinetoHorizontalAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathLinetoHorizontalRel, _p_Magick__PathLinetoHorizontalRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathLinetoRel, _p_Magick__PathLinetoRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathLinetoVerticalAbs, _p_Magick__PathLinetoVerticalAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathLinetoVerticalRel, _p_Magick__PathLinetoVerticalRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathMovetoAbs, _p_Magick__PathMovetoAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathMovetoRel, _p_Magick__PathMovetoRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathQuadraticCurvetoAbs, _p_Magick__PathQuadraticCurvetoAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathQuadraticCurvetoRel, _p_Magick__PathQuadraticCurvetoRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathSmoothCurvetoAbs, _p_Magick__PathSmoothCurvetoAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathSmoothCurvetoRel, _p_Magick__PathSmoothCurvetoRelTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathSmoothQuadraticCurvetoAbs, _p_Magick__PathSmoothQuadraticCurvetoAbsTo_p_Magick__VPathBase, 0, 0},  {&_swigt__p_Magick__PathSmoothQuadraticCurvetoRel, _p_Magick__PathSmoothQuadraticCurvetoRelTo_p_Magick__VPathBase, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__Warning[] = {  {&_swigt__p_Magick__Warning, 0, 0, 0},  {&_swigt__p_Magick__WarningBlob, _p_Magick__WarningBlobTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningCache, _p_Magick__WarningCacheTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningCoder, _p_Magick__WarningCoderTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningConfigure, _p_Magick__WarningConfigureTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningCorruptImage, _p_Magick__WarningCorruptImageTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningDelegate, _p_Magick__WarningDelegateTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningDraw, _p_Magick__WarningDrawTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningFileOpen, _p_Magick__WarningFileOpenTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningImage, _p_Magick__WarningImageTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningMissingDelegate, _p_Magick__WarningMissingDelegateTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningModule, _p_Magick__WarningModuleTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningMonitor, _p_Magick__WarningMonitorTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningOption, _p_Magick__WarningOptionTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningPolicy, _p_Magick__WarningPolicyTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningRegistry, _p_Magick__WarningRegistryTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningResourceLimit, _p_Magick__WarningResourceLimitTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningStream, _p_Magick__WarningStreamTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningType, _p_Magick__WarningTypeTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningUndefined, _p_Magick__WarningUndefinedTo_p_Magick__Warning, 0, 0},  {&_swigt__p_Magick__WarningXServer, _p_Magick__WarningXServerTo_p_Magick__Warning, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningPolicy[] = {  {&_swigt__p_Magick__WarningPolicy, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__WarningType[] = {  {&_swigt__p_Magick__WarningType, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__adaptiveBlurImage[] = {  {&_swigt__p_Magick__adaptiveBlurImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__adaptiveThresholdImage[] = {  {&_swigt__p_Magick__adaptiveThresholdImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__addNoiseImage[] = {  {&_swigt__p_Magick__addNoiseImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__adjoinImage[] = {  {&_swigt__p_Magick__adjoinImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__affineTransformImage[] = {  {&_swigt__p_Magick__affineTransformImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__alphaFlagImage[] = {  {&_swigt__p_Magick__alphaFlagImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__alphaImage[] = {  {&_swigt__p_Magick__alphaImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__animationDelayImage[] = {  {&_swigt__p_Magick__animationDelayImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__animationIterationsImage[] = {  {&_swigt__p_Magick__animationIterationsImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__annotateImage[] = {  {&_swigt__p_Magick__annotateImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__backgroundColorImage[] = {  {&_swigt__p_Magick__backgroundColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__backgroundTextureImage[] = {  {&_swigt__p_Magick__backgroundTextureImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__blurImage[] = {  {&_swigt__p_Magick__blurImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__borderColorImage[] = {  {&_swigt__p_Magick__borderColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__borderImage[] = {  {&_swigt__p_Magick__borderImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__boxColorImage[] = {  {&_swigt__p_Magick__boxColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__cdlImage[] = {  {&_swigt__p_Magick__cdlImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__channelImage[] = {  {&_swigt__p_Magick__channelImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__charcoalImage[] = {  {&_swigt__p_Magick__charcoalImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__chopImage[] = {  {&_swigt__p_Magick__chopImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__chromaBluePrimaryImage[] = {  {&_swigt__p_Magick__chromaBluePrimaryImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__chromaGreenPrimaryImage[] = {  {&_swigt__p_Magick__chromaGreenPrimaryImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__chromaRedPrimaryImage[] = {  {&_swigt__p_Magick__chromaRedPrimaryImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__chromaWhitePointImage[] = {  {&_swigt__p_Magick__chromaWhitePointImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__colorFuzzImage[] = {  {&_swigt__p_Magick__colorFuzzImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__colorMapImage[] = {  {&_swigt__p_Magick__colorMapImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__colorMatrixImage[] = {  {&_swigt__p_Magick__colorMatrixImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__colorSpaceImage[] = {  {&_swigt__p_Magick__colorSpaceImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__colorizeImage[] = {  {&_swigt__p_Magick__colorizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__commentImage[] = {  {&_swigt__p_Magick__commentImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__composeImage[] = {  {&_swigt__p_Magick__composeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__compositeImage[] = {  {&_swigt__p_Magick__compositeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__compressTypeImage[] = {  {&_swigt__p_Magick__compressTypeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__contrastImage[] = {  {&_swigt__p_Magick__contrastImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__cropImage[] = {  {&_swigt__p_Magick__cropImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__cycleColormapImage[] = {  {&_swigt__p_Magick__cycleColormapImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__densityImage[] = {  {&_swigt__p_Magick__densityImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__depthImage[] = {  {&_swigt__p_Magick__depthImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__despeckleImage[] = {  {&_swigt__p_Magick__despeckleImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__distortImage[] = {  {&_swigt__p_Magick__distortImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__drawImage[] = {  {&_swigt__p_Magick__drawImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__edgeImage[] = {  {&_swigt__p_Magick__edgeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__embossImage[] = {  {&_swigt__p_Magick__embossImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__endianImage[] = {  {&_swigt__p_Magick__endianImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__enhanceImage[] = {  {&_swigt__p_Magick__enhanceImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__equalizeImage[] = {  {&_swigt__p_Magick__equalizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__fileNameImage[] = {  {&_swigt__p_Magick__fileNameImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__fillColorImage[] = {  {&_swigt__p_Magick__fillColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__filterTypeImage[] = {  {&_swigt__p_Magick__filterTypeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__flipImage[] = {  {&_swigt__p_Magick__flipImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__floodFillAlphaImage[] = {  {&_swigt__p_Magick__floodFillAlphaImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__floodFillColorImage[] = {  {&_swigt__p_Magick__floodFillColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__floodFillTextureImage[] = {  {&_swigt__p_Magick__floodFillTextureImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__flopImage[] = {  {&_swigt__p_Magick__flopImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__fontImage[] = {  {&_swigt__p_Magick__fontImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__fontPointsizeImage[] = {  {&_swigt__p_Magick__fontPointsizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__frameImage[] = {  {&_swigt__p_Magick__frameImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__gammaImage[] = {  {&_swigt__p_Magick__gammaImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__gaussianBlurImage[] = {  {&_swigt__p_Magick__gaussianBlurImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__gifDisposeMethodImage[] = {  {&_swigt__p_Magick__gifDisposeMethodImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__haldClutImage[] = {  {&_swigt__p_Magick__haldClutImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__implodeImage[] = {  {&_swigt__p_Magick__implodeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__interlaceTypeImage[] = {  {&_swigt__p_Magick__interlaceTypeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__inverseFourierTransformImage[] = {  {&_swigt__p_Magick__inverseFourierTransformImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__isValidImage[] = {  {&_swigt__p_Magick__isValidImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__labelImage[] = {  {&_swigt__p_Magick__labelImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__levelImage[] = {  {&_swigt__p_Magick__levelImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__magickImage[] = {  {&_swigt__p_Magick__magickImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__magnifyImage[] = {  {&_swigt__p_Magick__magnifyImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__mapImage[] = {  {&_swigt__p_Magick__mapImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__matteColorImage[] = {  {&_swigt__p_Magick__matteColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__medianConvolveImage[] = {  {&_swigt__p_Magick__medianConvolveImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__minifyImage[] = {  {&_swigt__p_Magick__minifyImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__modulateImage[] = {  {&_swigt__p_Magick__modulateImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__monochromeImage[] = {  {&_swigt__p_Magick__monochromeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__negateImage[] = {  {&_swigt__p_Magick__negateImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__normalizeImage[] = {  {&_swigt__p_Magick__normalizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__oilPaintImage[] = {  {&_swigt__p_Magick__oilPaintImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__opaqueImage[] = {  {&_swigt__p_Magick__opaqueImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__pageImage[] = {  {&_swigt__p_Magick__pageImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__pixelColorImage[] = {  {&_swigt__p_Magick__pixelColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__qualityImage[] = {  {&_swigt__p_Magick__qualityImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__quantizeColorSpaceImage[] = {  {&_swigt__p_Magick__quantizeColorSpaceImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__quantizeColorsImage[] = {  {&_swigt__p_Magick__quantizeColorsImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__quantizeDitherImage[] = {  {&_swigt__p_Magick__quantizeDitherImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__quantizeImage[] = {  {&_swigt__p_Magick__quantizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__quantizeTreeDepthImage[] = {  {&_swigt__p_Magick__quantizeTreeDepthImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__raiseImage[] = {  {&_swigt__p_Magick__raiseImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__reduceNoiseImage[] = {  {&_swigt__p_Magick__reduceNoiseImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__renderingIntentImage[] = {  {&_swigt__p_Magick__renderingIntentImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__resizeImage[] = {  {&_swigt__p_Magick__resizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__resolutionUnitsImage[] = {  {&_swigt__p_Magick__resolutionUnitsImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__rollImage[] = {  {&_swigt__p_Magick__rollImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__rotateImage[] = {  {&_swigt__p_Magick__rotateImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__sampleImage[] = {  {&_swigt__p_Magick__sampleImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__scaleImage[] = {  {&_swigt__p_Magick__scaleImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__sceneImage[] = {  {&_swigt__p_Magick__sceneImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__segmentImage[] = {  {&_swigt__p_Magick__segmentImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__shadeImage[] = {  {&_swigt__p_Magick__shadeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__shadowImage[] = {  {&_swigt__p_Magick__shadowImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__sharpenImage[] = {  {&_swigt__p_Magick__sharpenImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__shaveImage[] = {  {&_swigt__p_Magick__shaveImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__shearImage[] = {  {&_swigt__p_Magick__shearImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__sizeImage[] = {  {&_swigt__p_Magick__sizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__solarizeImage[] = {  {&_swigt__p_Magick__solarizeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__spliceImage[] = {  {&_swigt__p_Magick__spliceImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__spreadImage[] = {  {&_swigt__p_Magick__spreadImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__steganoImage[] = {  {&_swigt__p_Magick__steganoImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__stereoImage[] = {  {&_swigt__p_Magick__stereoImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__stripImage[] = {  {&_swigt__p_Magick__stripImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__strokeColorImage[] = {  {&_swigt__p_Magick__strokeColorImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__subImageImage[] = {  {&_swigt__p_Magick__subImageImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__subRangeImage[] = {  {&_swigt__p_Magick__subRangeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__swirlImage[] = {  {&_swigt__p_Magick__swirlImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__textAntiAliasImage[] = {  {&_swigt__p_Magick__textAntiAliasImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__textureImage[] = {  {&_swigt__p_Magick__textureImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__thresholdImage[] = {  {&_swigt__p_Magick__thresholdImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__transparentImage[] = {  {&_swigt__p_Magick__transparentImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__trimImage[] = {  {&_swigt__p_Magick__trimImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__typeImage[] = {  {&_swigt__p_Magick__typeImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__verboseImage[] = {  {&_swigt__p_Magick__verboseImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__waveImage[] = {  {&_swigt__p_Magick__waveImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__x11DisplayImage[] = {  {&_swigt__p_Magick__x11DisplayImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Magick__zoomImage[] = {  {&_swigt__p_Magick__zoomImage, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p__DrawingWand[] = {  {&_swigt__p__DrawingWand, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p__PolicyInfo[] = {  {&_swigt__p__PolicyInfo, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_difference_type[] = {  {&_swigt__p_difference_type, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_double[] = {  {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_float[] = {  {&_swigt__p_float, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_long_long[] = {  {&_swigt__p_long_long, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_p_MagickCore___Image[] = {  {&_swigt__p_p_MagickCore___Image, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_p_void[] = {  {&_swigt__p_p_void, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_size_t[] = {  {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_size_type[] = {  {&_swigt__p_size_type, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__exception[] = {  {&_swigt__p_std__exception, 0, 0, 0},  {&_swigt__p_Magick__Error, _p_Magick__ErrorTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorBlob, _p_Magick__ErrorBlobTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorCache, _p_Magick__ErrorCacheTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorCoder, _p_Magick__ErrorCoderTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorConfigure, _p_Magick__ErrorConfigureTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorCorruptImage, _p_Magick__ErrorCorruptImageTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorDelegate, _p_Magick__ErrorDelegateTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorDraw, _p_Magick__ErrorDrawTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorFileOpen, _p_Magick__ErrorFileOpenTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorImage, _p_Magick__ErrorImageTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorMissingDelegate, _p_Magick__ErrorMissingDelegateTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorModule, _p_Magick__ErrorModuleTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorMonitor, _p_Magick__ErrorMonitorTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorOption, _p_Magick__ErrorOptionTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorPolicy, _p_Magick__ErrorPolicyTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorRegistry, _p_Magick__ErrorRegistryTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorResourceLimit, _p_Magick__ErrorResourceLimitTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorStream, _p_Magick__ErrorStreamTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorType, _p_Magick__ErrorTypeTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorUndefined, _p_Magick__ErrorUndefinedTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__ErrorXServer, _p_Magick__ErrorXServerTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__Exception, _p_Magick__ExceptionTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__Warning, _p_Magick__WarningTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningBlob, _p_Magick__WarningBlobTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningCache, _p_Magick__WarningCacheTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningCoder, _p_Magick__WarningCoderTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningConfigure, _p_Magick__WarningConfigureTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningCorruptImage, _p_Magick__WarningCorruptImageTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningDelegate, _p_Magick__WarningDelegateTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningDraw, _p_Magick__WarningDrawTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningFileOpen, _p_Magick__WarningFileOpenTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningImage, _p_Magick__WarningImageTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningMissingDelegate, _p_Magick__WarningMissingDelegateTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningModule, _p_Magick__WarningModuleTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningMonitor, _p_Magick__WarningMonitorTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningOption, _p_Magick__WarningOptionTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningPolicy, _p_Magick__WarningPolicyTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningRegistry, _p_Magick__WarningRegistryTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningResourceLimit, _p_Magick__WarningResourceLimitTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningStream, _p_Magick__WarningStreamTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningType, _p_Magick__WarningTypeTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningUndefined, _p_Magick__WarningUndefinedTo_p_std__exception, 0, 0},  {&_swigt__p_Magick__WarningXServer, _p_Magick__WarningXServerTo_p_std__exception, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorT_Magick__CoderInfo_t[] = {  {&_swigt__p_std__vectorT_Magick__CoderInfo_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorT_Magick__Coordinate_t[] = {  {&_swigt__p_std__vectorT_Magick__Coordinate_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorT_Magick__Drawable_t[] = {  {&_swigt__p_std__vectorT_Magick__Drawable_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorT_Magick__PathArcArgs_t[] = {  {&_swigt__p_std__vectorT_Magick__PathArcArgs_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorT_Magick__PathCurvetoArgs_t[] = {  {&_swigt__p_std__vectorT_Magick__PathCurvetoArgs_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t[] = {  {&_swigt__p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__vectorT_Magick__VPath_t[] = {  {&_swigt__p_std__vectorT_Magick__VPath_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_uintptr_t[] = {  {&_swigt__p_uintptr_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_unsigned_int[] = {  {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_unsigned_long_long[] = {  {&_swigt__p_unsigned_long_long, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_value_type[] = {  {&_swigt__p_value_type, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_void[] = {  {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};

static swig_cast_info *swig_cast_initial[] = {
  _swigc__p_FILE,
  _swigc__p_ImageListContainer,
  _swigc__p_ImageListIterator,
  _swigc__p_MagickCore__AlignType,
  _swigc__p_MagickCore__CacheType,
  _swigc__p_MagickCore__ChannelType,
  _swigc__p_MagickCore__ClassType,
  _swigc__p_MagickCore__ColorspaceType,
  _swigc__p_MagickCore__ComplexOperator,
  _swigc__p_MagickCore__ComplianceType,
  _swigc__p_MagickCore__CompositeOperator,
  _swigc__p_MagickCore__CompressionType,
  _swigc__p_MagickCore__DecorationType,
  _swigc__p_MagickCore__DirectionType,
  _swigc__p_MagickCore__DisposeType,
  _swigc__p_MagickCore__EndianType,
  _swigc__p_MagickCore__ExceptionType,
  _swigc__p_MagickCore__FilterType,
  _swigc__p_MagickCore__GradientType,
  _swigc__p_MagickCore__GravityType,
  _swigc__p_MagickCore__IlluminantType,
  _swigc__p_MagickCore__ImageType,
  _swigc__p_MagickCore__InterlaceType,
  _swigc__p_MagickCore__KernelInfoType,
  _swigc__p_MagickCore__LogEventType,
  _swigc__p_MagickCore__MagickBooleanType,
  _swigc__p_MagickCore__MagickCLDeviceType,
  _swigc__p_MagickCore__MagickEvaluateOperator,
  _swigc__p_MagickCore__MagickFormatType,
  _swigc__p_MagickCore__MagickModuleType,
  _swigc__p_MagickCore__MetricType,
  _swigc__p_MagickCore__NoiseType,
  _swigc__p_MagickCore__OrientationType,
  _swigc__p_MagickCore__PathType,
  _swigc__p_MagickCore__PolicyDomain,
  _swigc__p_MagickCore__PolicyRights,
  _swigc__p_MagickCore__PreviewType,
  _swigc__p_MagickCore__PrimitiveType,
  _swigc__p_MagickCore__QuantumAlphaType,
  _swigc__p_MagickCore__QuantumFormatType,
  _swigc__p_MagickCore__QuantumType,
  _swigc__p_MagickCore__ReferenceType,
  _swigc__p_MagickCore__RegistryType,
  _swigc__p_MagickCore__ResolutionType,
  _swigc__p_MagickCore__ResourceType,
  _swigc__p_MagickCore__StatisticType,
  _swigc__p_MagickCore__StorageType,
  _swigc__p_MagickCore__StretchType,
  _swigc__p_MagickCore__StyleType,
  _swigc__p_MagickCore__TransmitType,
  _swigc__p_MagickCore__ValidateType,
  _swigc__p_MagickCore__WordBreakType,
  _swigc__p_MagickCore___ChannelMoments,
  _swigc__p_MagickCore___ChannelPerceptualHash,
  _swigc__p_MagickCore___ChannelStatistics,
  _swigc__p_MagickCore___ExceptionInfo,
  _swigc__p_MagickCore___Image,
  _swigc__p_MagickCore___ImageInfo,
  _swigc__p_MagickCore___MontageInfo,
  _swigc__p_MagickCore___QuantizeInfo,
  _swigc__p_MagickCore___RectangleInfo,
  _swigc__p_MagickWand,
  _swigc__p_Magick__Blob,
  _swigc__p_Magick__ChannelMoments,
  _swigc__p_Magick__ChannelPerceptualHash,
  _swigc__p_Magick__ChannelStatistics,
  _swigc__p_Magick__CoderInfo,
  _swigc__p_Magick__Color,
  _swigc__p_Magick__ColorCMYK,
  _swigc__p_Magick__ColorGray,
  _swigc__p_Magick__ColorHSL,
  _swigc__p_Magick__ColorMono,
  _swigc__p_Magick__ColorRGB,
  _swigc__p_Magick__ColorYUV,
  _swigc__p_Magick__Coordinate,
  _swigc__p_Magick__Drawable,
  _swigc__p_Magick__DrawableAffine,
  _swigc__p_Magick__DrawableAlpha,
  _swigc__p_Magick__DrawableArc,
  _swigc__p_Magick__DrawableBase,
  _swigc__p_Magick__DrawableBezier,
  _swigc__p_Magick__DrawableBorderColor,
  _swigc__p_Magick__DrawableCircle,
  _swigc__p_Magick__DrawableClipPath,
  _swigc__p_Magick__DrawableClipRule,
  _swigc__p_Magick__DrawableClipUnits,
  _swigc__p_Magick__DrawableColor,
  _swigc__p_Magick__DrawableCompositeImage,
  _swigc__p_Magick__DrawableDensity,
  _swigc__p_Magick__DrawableEllipse,
  _swigc__p_Magick__DrawableFillColor,
  _swigc__p_Magick__DrawableFillOpacity,
  _swigc__p_Magick__DrawableFillPatternUrl,
  _swigc__p_Magick__DrawableFillRule,
  _swigc__p_Magick__DrawableFont,
  _swigc__p_Magick__DrawableGravity,
  _swigc__p_Magick__DrawableLine,
  _swigc__p_Magick__DrawableMiterLimit,
  _swigc__p_Magick__DrawablePath,
  _swigc__p_Magick__DrawablePoint,
  _swigc__p_Magick__DrawablePointSize,
  _swigc__p_Magick__DrawablePolygon,
  _swigc__p_Magick__DrawablePolyline,
  _swigc__p_Magick__DrawablePopClipPath,
  _swigc__p_Magick__DrawablePopGraphicContext,
  _swigc__p_Magick__DrawablePopPattern,
  _swigc__p_Magick__DrawablePushClipPath,
  _swigc__p_Magick__DrawablePushGraphicContext,
  _swigc__p_Magick__DrawablePushPattern,
  _swigc__p_Magick__DrawableRectangle,
  _swigc__p_Magick__DrawableRotation,
  _swigc__p_Magick__DrawableRoundRectangle,
  _swigc__p_Magick__DrawableScaling,
  _swigc__p_Magick__DrawableSkewX,
  _swigc__p_Magick__DrawableSkewY,
  _swigc__p_Magick__DrawableStrokeAntialias,
  _swigc__p_Magick__DrawableStrokeColor,
  _swigc__p_Magick__DrawableStrokeDashArray,
  _swigc__p_Magick__DrawableStrokeDashOffset,
  _swigc__p_Magick__DrawableStrokeLineCap,
  _swigc__p_Magick__DrawableStrokeLineJoin,
  _swigc__p_Magick__DrawableStrokeOpacity,
  _swigc__p_Magick__DrawableStrokePatternUrl,
  _swigc__p_Magick__DrawableStrokeWidth,
  _swigc__p_Magick__DrawableText,
  _swigc__p_Magick__DrawableTextAlignment,
  _swigc__p_Magick__DrawableTextAntialias,
  _swigc__p_Magick__DrawableTextDecoration,
  _swigc__p_Magick__DrawableTextDirection,
  _swigc__p_Magick__DrawableTextInterlineSpacing,
  _swigc__p_Magick__DrawableTextInterwordSpacing,
  _swigc__p_Magick__DrawableTextKerning,
  _swigc__p_Magick__DrawableTextUnderColor,
  _swigc__p_Magick__DrawableTranslation,
  _swigc__p_Magick__DrawableViewbox,
  _swigc__p_Magick__Error,
  _swigc__p_Magick__ErrorBlob,
  _swigc__p_Magick__ErrorCache,
  _swigc__p_Magick__ErrorCoder,
  _swigc__p_Magick__ErrorConfigure,
  _swigc__p_Magick__ErrorCorruptImage,
  _swigc__p_Magick__ErrorDelegate,
  _swigc__p_Magick__ErrorDraw,
  _swigc__p_Magick__ErrorFileOpen,
  _swigc__p_Magick__ErrorImage,
  _swigc__p_Magick__ErrorMissingDelegate,
  _swigc__p_Magick__ErrorModule,
  _swigc__p_Magick__ErrorMonitor,
  _swigc__p_Magick__ErrorOption,
  _swigc__p_Magick__ErrorPolicy,
  _swigc__p_Magick__ErrorRegistry,
  _swigc__p_Magick__ErrorResourceLimit,
  _swigc__p_Magick__ErrorStream,
  _swigc__p_Magick__ErrorType,
  _swigc__p_Magick__ErrorUndefined,
  _swigc__p_Magick__ErrorXServer,
  _swigc__p_Magick__Exception,
  _swigc__p_Magick__Geometry,
  _swigc__p_Magick__Image,
  _swigc__p_Magick__ImageMoments,
  _swigc__p_Magick__ImagePerceptualHash,
  _swigc__p_Magick__ImageStatistics,
  _swigc__p_Magick__Montage,
  _swigc__p_Magick__MontageFramed,
  _swigc__p_Magick__Offset,
  _swigc__p_Magick__Options,
  _swigc__p_Magick__PathArcAbs,
  _swigc__p_Magick__PathArcArgs,
  _swigc__p_Magick__PathArcRel,
  _swigc__p_Magick__PathClosePath,
  _swigc__p_Magick__PathCurvetoAbs,
  _swigc__p_Magick__PathCurvetoArgs,
  _swigc__p_Magick__PathCurvetoRel,
  _swigc__p_Magick__PathLinetoAbs,
  _swigc__p_Magick__PathLinetoHorizontalAbs,
  _swigc__p_Magick__PathLinetoHorizontalRel,
  _swigc__p_Magick__PathLinetoRel,
  _swigc__p_Magick__PathLinetoVerticalAbs,
  _swigc__p_Magick__PathLinetoVerticalRel,
  _swigc__p_Magick__PathMovetoAbs,
  _swigc__p_Magick__PathMovetoRel,
  _swigc__p_Magick__PathQuadraticCurvetoAbs,
  _swigc__p_Magick__PathQuadraticCurvetoArgs,
  _swigc__p_Magick__PathQuadraticCurvetoRel,
  _swigc__p_Magick__PathSmoothCurvetoAbs,
  _swigc__p_Magick__PathSmoothCurvetoRel,
  _swigc__p_Magick__PathSmoothQuadraticCurvetoAbs,
  _swigc__p_Magick__PathSmoothQuadraticCurvetoRel,
  _swigc__p_Magick__Point,
  _swigc__p_Magick__ReadOptions,
  _swigc__p_Magick__ResourceLimits,
  _swigc__p_Magick__TypeMetric,
  _swigc__p_Magick__VPath,
  _swigc__p_Magick__VPathBase,
  _swigc__p_Magick__Warning,
  _swigc__p_Magick__WarningBlob,
  _swigc__p_Magick__WarningCache,
  _swigc__p_Magick__WarningCoder,
  _swigc__p_Magick__WarningConfigure,
  _swigc__p_Magick__WarningCorruptImage,
  _swigc__p_Magick__WarningDelegate,
  _swigc__p_Magick__WarningDraw,
  _swigc__p_Magick__WarningFileOpen,
  _swigc__p_Magick__WarningImage,
  _swigc__p_Magick__WarningMissingDelegate,
  _swigc__p_Magick__WarningModule,
  _swigc__p_Magick__WarningMonitor,
  _swigc__p_Magick__WarningOption,
  _swigc__p_Magick__WarningPolicy,
  _swigc__p_Magick__WarningRegistry,
  _swigc__p_Magick__WarningResourceLimit,
  _swigc__p_Magick__WarningStream,
  _swigc__p_Magick__WarningType,
  _swigc__p_Magick__WarningUndefined,
  _swigc__p_Magick__WarningXServer,
  _swigc__p_Magick__adaptiveBlurImage,
  _swigc__p_Magick__adaptiveThresholdImage,
  _swigc__p_Magick__addNoiseImage,
  _swigc__p_Magick__adjoinImage,
  _swigc__p_Magick__affineTransformImage,
  _swigc__p_Magick__alphaFlagImage,
  _swigc__p_Magick__alphaImage,
  _swigc__p_Magick__animationDelayImage,
  _swigc__p_Magick__animationIterationsImage,
  _swigc__p_Magick__annotateImage,
  _swigc__p_Magick__backgroundColorImage,
  _swigc__p_Magick__backgroundTextureImage,
  _swigc__p_Magick__blurImage,
  _swigc__p_Magick__borderColorImage,
  _swigc__p_Magick__borderImage,
  _swigc__p_Magick__boxColorImage,
  _swigc__p_Magick__cdlImage,
  _swigc__p_Magick__channelImage,
  _swigc__p_Magick__charcoalImage,
  _swigc__p_Magick__chopImage,
  _swigc__p_Magick__chromaBluePrimaryImage,
  _swigc__p_Magick__chromaGreenPrimaryImage,
  _swigc__p_Magick__chromaRedPrimaryImage,
  _swigc__p_Magick__chromaWhitePointImage,
  _swigc__p_Magick__colorFuzzImage,
  _swigc__p_Magick__colorMapImage,
  _swigc__p_Magick__colorMatrixImage,
  _swigc__p_Magick__colorSpaceImage,
  _swigc__p_Magick__colorizeImage,
  _swigc__p_Magick__commentImage,
  _swigc__p_Magick__composeImage,
  _swigc__p_Magick__compositeImage,
  _swigc__p_Magick__compressTypeImage,
  _swigc__p_Magick__contrastImage,
  _swigc__p_Magick__cropImage,
  _swigc__p_Magick__cycleColormapImage,
  _swigc__p_Magick__densityImage,
  _swigc__p_Magick__depthImage,
  _swigc__p_Magick__despeckleImage,
  _swigc__p_Magick__distortImage,
  _swigc__p_Magick__drawImage,
  _swigc__p_Magick__edgeImage,
  _swigc__p_Magick__embossImage,
  _swigc__p_Magick__endianImage,
  _swigc__p_Magick__enhanceImage,
  _swigc__p_Magick__equalizeImage,
  _swigc__p_Magick__fileNameImage,
  _swigc__p_Magick__fillColorImage,
  _swigc__p_Magick__filterTypeImage,
  _swigc__p_Magick__flipImage,
  _swigc__p_Magick__floodFillAlphaImage,
  _swigc__p_Magick__floodFillColorImage,
  _swigc__p_Magick__floodFillTextureImage,
  _swigc__p_Magick__flopImage,
  _swigc__p_Magick__fontImage,
  _swigc__p_Magick__fontPointsizeImage,
  _swigc__p_Magick__frameImage,
  _swigc__p_Magick__gammaImage,
  _swigc__p_Magick__gaussianBlurImage,
  _swigc__p_Magick__gifDisposeMethodImage,
  _swigc__p_Magick__haldClutImage,
  _swigc__p_Magick__implodeImage,
  _swigc__p_Magick__interlaceTypeImage,
  _swigc__p_Magick__inverseFourierTransformImage,
  _swigc__p_Magick__isValidImage,
  _swigc__p_Magick__labelImage,
  _swigc__p_Magick__levelImage,
  _swigc__p_Magick__magickImage,
  _swigc__p_Magick__magnifyImage,
  _swigc__p_Magick__mapImage,
  _swigc__p_Magick__matteColorImage,
  _swigc__p_Magick__medianConvolveImage,
  _swigc__p_Magick__minifyImage,
  _swigc__p_Magick__modulateImage,
  _swigc__p_Magick__monochromeImage,
  _swigc__p_Magick__negateImage,
  _swigc__p_Magick__normalizeImage,
  _swigc__p_Magick__oilPaintImage,
  _swigc__p_Magick__opaqueImage,
  _swigc__p_Magick__pageImage,
  _swigc__p_Magick__pixelColorImage,
  _swigc__p_Magick__qualityImage,
  _swigc__p_Magick__quantizeColorSpaceImage,
  _swigc__p_Magick__quantizeColorsImage,
  _swigc__p_Magick__quantizeDitherImage,
  _swigc__p_Magick__quantizeImage,
  _swigc__p_Magick__quantizeTreeDepthImage,
  _swigc__p_Magick__raiseImage,
  _swigc__p_Magick__reduceNoiseImage,
  _swigc__p_Magick__renderingIntentImage,
  _swigc__p_Magick__resizeImage,
  _swigc__p_Magick__resolutionUnitsImage,
  _swigc__p_Magick__rollImage,
  _swigc__p_Magick__rotateImage,
  _swigc__p_Magick__sampleImage,
  _swigc__p_Magick__scaleImage,
  _swigc__p_Magick__sceneImage,
  _swigc__p_Magick__segmentImage,
  _swigc__p_Magick__shadeImage,
  _swigc__p_Magick__shadowImage,
  _swigc__p_Magick__sharpenImage,
  _swigc__p_Magick__shaveImage,
  _swigc__p_Magick__shearImage,
  _swigc__p_Magick__sizeImage,
  _swigc__p_Magick__solarizeImage,
  _swigc__p_Magick__spliceImage,
  _swigc__p_Magick__spreadImage,
  _swigc__p_Magick__steganoImage,
  _swigc__p_Magick__stereoImage,
  _swigc__p_Magick__stripImage,
  _swigc__p_Magick__strokeColorImage,
  _swigc__p_Magick__subImageImage,
  _swigc__p_Magick__subRangeImage,
  _swigc__p_Magick__swirlImage,
  _swigc__p_Magick__textAntiAliasImage,
  _swigc__p_Magick__textureImage,
  _swigc__p_Magick__thresholdImage,
  _swigc__p_Magick__transparentImage,
  _swigc__p_Magick__trimImage,
  _swigc__p_Magick__typeImage,
  _swigc__p_Magick__verboseImage,
  _swigc__p_Magick__waveImage,
  _swigc__p_Magick__x11DisplayImage,
  _swigc__p_Magick__zoomImage,
  _swigc__p__DrawingWand,
  _swigc__p__PolicyInfo,
  _swigc__p_char,
  _swigc__p_difference_type,
  _swigc__p_double,
  _swigc__p_float,
  _swigc__p_long_long,
  _swigc__p_p_MagickCore___Image,
  _swigc__p_p_char,
  _swigc__p_p_void,
  _swigc__p_size_t,
  _swigc__p_size_type,
  _swigc__p_std__exception,
  _swigc__p_std__vectorT_Magick__CoderInfo_t,
  _swigc__p_std__vectorT_Magick__Coordinate_t,
  _swigc__p_std__vectorT_Magick__Drawable_t,
  _swigc__p_std__vectorT_Magick__PathArcArgs_t,
  _swigc__p_std__vectorT_Magick__PathCurvetoArgs_t,
  _swigc__p_std__vectorT_Magick__PathQuadraticCurvetoArgs_t,
  _swigc__p_std__vectorT_Magick__VPath_t,
  _swigc__p_uintptr_t,
  _swigc__p_unsigned_char,
  _swigc__p_unsigned_int,
  _swigc__p_unsigned_long_long,
  _swigc__p_value_type,
  _swigc__p_void,
};


/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */




EnvInstanceData::EnvInstanceData(Napi::Env env, swig_module_info *swig_module) :
env(env), SWIG_NAPI_ObjectWrapCtor(SWIG_NULLPTR), ctor(SWIG_NULLPTR), swig_module(swig_module) {
  ctor = new Napi::FunctionReference*[swig_module->size + 1];
  for (size_t i = 0; i <= swig_module->size; i++) {
    ctor[i] = SWIG_NULLPTR;
  }
}

EnvInstanceData::~EnvInstanceData() {
  for (size_t i = 0; i <= swig_module->size; i++) {
    if (ctor[i] != SWIG_NULLPTR)
      delete ctor[i];
    ctor[i] = SWIG_NULLPTR;
  }
  delete [] ctor;
  delete SWIG_NAPI_ObjectWrapCtor;
}

SWIGRUNTIME void
SWIG_NAPI_SetModule(Napi::Env env, swig_module_info *swig_module) {
  auto data = new EnvInstanceData(env, swig_module);
  env.SetInstanceData(data);
}

SWIGRUNTIME swig_module_info *
SWIG_NAPI_GetModule(Napi::Env env) {
  auto data = env.GetInstanceData<EnvInstanceData>();
  if (data == SWIG_NULLPTR) return SWIG_NULLPTR;
  return data->swig_module;
}

#define SWIG_GetModule(clientdata)                SWIG_NAPI_GetModule(clientdata)
#define SWIG_SetModule(clientdata, pointer)       SWIG_NAPI_SetModule(clientdata, pointer)
#define SWIG_INIT_CLIENT_DATA_TYPE                Napi::Env


/* -----------------------------------------------------------------------------
 * Type initialization:
 * This problem is tough by the requirement that no dynamic
 * memory is used. Also, since swig_type_info structures store pointers to
 * swig_cast_info structures and swig_cast_info structures store pointers back
 * to swig_type_info structures, we need some lookup code at initialization.
 * The idea is that swig generates all the structures that are needed.
 * The runtime then collects these partially filled structures.
 * The SWIG_InitializeModule function takes these initial arrays out of
 * swig_module, and does all the lookup, filling in the swig_module.types
 * array with the correct data and linking the correct swig_cast_info
 * structures together.
 *
 * The generated swig_type_info structures are assigned statically to an initial
 * array. We just loop through that array, and handle each type individually.
 * First we lookup if this type has been already loaded, and if so, use the
 * loaded structure instead of the generated one. Then we have to fill in the
 * cast linked list. The cast data is initially stored in something like a
 * two-dimensional array. Each row corresponds to a type (there are the same
 * number of rows as there are in the swig_type_initial array). Each entry in
 * a column is one of the swig_cast_info structures for that type.
 * The cast_initial array is actually an array of arrays, because each row has
 * a variable number of columns. So to actually build the cast linked list,
 * we find the array of casts associated with the type, and loop through it
 * adding the casts to the list. The one last trick we need to do is making
 * sure the type pointer in the swig_cast_info struct is correct.
 *
 * First off, we lookup the cast->type name to see if it is already loaded.
 * There are three cases to handle:
 *  1) If the cast->type has already been loaded AND the type we are adding
 *     casting info to has not been loaded (it is in this module), THEN we
 *     replace the cast->type pointer with the type pointer that has already
 *     been loaded.
 *  2) If BOTH types (the one we are adding casting info to, and the
 *     cast->type) are loaded, THEN the cast info has already been loaded by
 *     the previous module so we just ignore it.
 *  3) Finally, if cast->type has not already been loaded, then we add that
 *     swig_cast_info to the linked list (because the cast->type) pointer will
 *     be correct.
 * ----------------------------------------------------------------------------- */

#ifdef __cplusplus
extern "C" {
#if 0
} /* c-mode */
#endif
#endif

#if 0
#define SWIGRUNTIME_DEBUG
#endif

#ifndef SWIG_INIT_CLIENT_DATA_TYPE
#define SWIG_INIT_CLIENT_DATA_TYPE void *
#endif

SWIGRUNTIME void
SWIG_InitializeModule(SWIG_INIT_CLIENT_DATA_TYPE clientdata) {
  size_t i;
  swig_module_info *module_head, *iter;
  int init;

  /* check to see if the circular list has been setup, if not, set it up */
  if (swig_module.next==0) {
    /* Initialize the swig_module */
    swig_module.type_initial = swig_type_initial;
    swig_module.cast_initial = swig_cast_initial;
    swig_module.next = &swig_module;
    init = 1;
  } else {
    init = 0;
  }

  /* Try and load any already created modules */
  module_head = SWIG_GetModule(clientdata);
  if (!module_head) {
    /* This is the first module loaded for this interpreter */
    /* so set the swig module into the interpreter */
    SWIG_SetModule(clientdata, &swig_module);
  } else {
    /* the interpreter has loaded a SWIG module, but has it loaded this one? */
    iter=module_head;
    do {
      if (iter==&swig_module) {
        /* Our module is already in the list, so there's nothing more to do. */
        return;
      }
      iter=iter->next;
    } while (iter!= module_head);

    /* otherwise we must add our module into the list */
    swig_module.next = module_head->next;
    module_head->next = &swig_module;
  }

  /* When multiple interpreters are used, a module could have already been initialized in
     a different interpreter, but not yet have a pointer in this interpreter.
     In this case, we do not want to continue adding types... everything should be
     set up already */
  if (init == 0) return;

  /* Now work on filling in swig_module.types */
#ifdef SWIGRUNTIME_DEBUG
  printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size);
#endif
  for (i = 0; i < swig_module.size; ++i) {
    swig_type_info *type = 0;
    swig_type_info *ret;
    swig_cast_info *cast;

#ifdef SWIGRUNTIME_DEBUG
    printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
#endif

    /* if there is another module already loaded */
    if (swig_module.next != &swig_module) {
      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
    }
    if (type) {
      /* Overwrite clientdata field */
#ifdef SWIGRUNTIME_DEBUG
      printf("SWIG_InitializeModule: found type %s\n", type->name);
#endif
      if (swig_module.type_initial[i]->clientdata) {
	type->clientdata = swig_module.type_initial[i]->clientdata;
#ifdef SWIGRUNTIME_DEBUG
      printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
#endif
      }
    } else {
      type = swig_module.type_initial[i];
    }

    /* Insert casting types */
    cast = swig_module.cast_initial[i];
    while (cast->type) {

      /* Don't need to add information already in the list */
      ret = 0;
#ifdef SWIGRUNTIME_DEBUG
      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
#endif
      if (swig_module.next != &swig_module) {
        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
#ifdef SWIGRUNTIME_DEBUG
	if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
#endif
      }
      if (ret) {
	if (type == swig_module.type_initial[i]) {
#ifdef SWIGRUNTIME_DEBUG
	  printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
#endif
	  cast->type = ret;
	  ret = 0;
	} else {
	  /* Check for casting already in the list */
	  swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
#ifdef SWIGRUNTIME_DEBUG
	  if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
#endif
	  if (!ocast) ret = 0;
	}
      }

      if (!ret) {
#ifdef SWIGRUNTIME_DEBUG
	printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
#endif
        if (type->cast) {
          type->cast->prev = cast;
          cast->next = type->cast;
        }
        type->cast = cast;
      }
      cast++;
    }
    /* Set entry in modules->types array equal to the type */
    swig_module.types[i] = type;
  }
  swig_module.types[i] = 0;

#ifdef SWIGRUNTIME_DEBUG
  printf("**** SWIG_InitializeModule: Cast List ******\n");
  for (i = 0; i < swig_module.size; ++i) {
    int j = 0;
    swig_cast_info *cast = swig_module.cast_initial[i];
    printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
    while (cast->type) {
      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
      cast++;
      ++j;
    }
  printf("---- Total casts: %d\n",j);
  }
  printf("**** SWIG_InitializeModule: Cast List ******\n");
#endif
}

/* This function will propagate the clientdata field of type to
* any new swig_type_info structures that have been added into the list
* of equivalent types.  It is like calling
* SWIG_TypeClientData(type, clientdata) a second time.
*/
SWIGRUNTIME void
SWIG_PropagateClientData(void) {
  size_t i;
  swig_cast_info *equiv;
  static int init_run = 0;

  if (init_run) return;
  init_run = 1;

  for (i = 0; i < swig_module.size; i++) {
    if (swig_module.types[i]->clientdata) {
      equiv = swig_module.types[i]->cast;
      while (equiv) {
        if (!equiv->converter) {
          if (equiv->type && !equiv->type->clientdata)
            SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
        }
        equiv = equiv->next;
      }
    }
  }
}

#ifdef __cplusplus
#if 0
{ /* c-mode */
#endif
}
#endif


Napi::Object Init(Napi::Env env, Napi::Object exports) {
  SWIG_InitializeModule(env);


// We link in everything statically
InitializeMagick(".");


  Napi::Function SWIG_NAPI_ObjectWrap_ctor = SWIG_NAPI_ObjectWrap_inst::GetClass(env);
  Napi::FunctionReference *SWIG_NAPI_ObjectWrap_ctor_ref = new Napi::FunctionReference();
  *SWIG_NAPI_ObjectWrap_ctor_ref = Napi::Persistent(SWIG_NAPI_ObjectWrap_ctor);
  env.GetInstanceData<EnvInstanceData>()->SWIG_NAPI_ObjectWrapCtor = SWIG_NAPI_ObjectWrap_ctor_ref;

  /* create objects for namespaces */
  // jsnapi_create_namespace
Napi::Object MagickCore = Napi::Object::New(env);
// jsnapi_create_namespace
Napi::Object Magick = Napi::Object::New(env);
// jsnapi_create_namespace
Napi::Object std = Napi::Object::New(env);


  /* register classes */
  /* Class: Blob (_Magick_Blob) */
// jsnapi_registerclass
Napi::Function _Magick_Blob_ctor = _Magick_Blob_inst::GetClass(env);
Magick.Set("Blob", _Magick_Blob_ctor);
if (SWIGTYPE_p_Magick__Blob->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Blob->clientdata = new size_t(0);
}
Napi::FunctionReference *_Magick_Blob_ctor_ref = new Napi::FunctionReference();
*_Magick_Blob_ctor_ref = Napi::Persistent(_Magick_Blob_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[0] = _Magick_Blob_ctor_ref;
/* Class: Color (_Magick_Color) */
// jsnapi_registerclass
Napi::Function _Magick_Color_ctor = _Magick_Color_inst::GetClass(env);
Magick.Set("Color", _Magick_Color_ctor);
if (SWIGTYPE_p_Magick__Color->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Color->clientdata = new size_t(1);
}
Napi::FunctionReference *_Magick_Color_ctor_ref = new Napi::FunctionReference();
*_Magick_Color_ctor_ref = Napi::Persistent(_Magick_Color_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[1] = _Magick_Color_ctor_ref;
/* Class: ColorCMYK (_Magick_ColorCMYK) */
// jsnapi_registerclass
Napi::Function _Magick_ColorCMYK_ctor = _Magick_ColorCMYK_inst::GetClass(env);
Magick.Set("ColorCMYK", _Magick_ColorCMYK_ctor);
if (SWIGTYPE_p_Magick__ColorCMYK->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ColorCMYK->clientdata = new size_t(2);
}
Napi::FunctionReference *_Magick_ColorCMYK_ctor_ref = new Napi::FunctionReference();
*_Magick_ColorCMYK_ctor_ref = Napi::Persistent(_Magick_ColorCMYK_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[2] = _Magick_ColorCMYK_ctor_ref;
/* Class: ColorGray (_Magick_ColorGray) */
// jsnapi_registerclass
Napi::Function _Magick_ColorGray_ctor = _Magick_ColorGray_inst::GetClass(env);
Magick.Set("ColorGray", _Magick_ColorGray_ctor);
if (SWIGTYPE_p_Magick__ColorGray->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ColorGray->clientdata = new size_t(3);
}
Napi::FunctionReference *_Magick_ColorGray_ctor_ref = new Napi::FunctionReference();
*_Magick_ColorGray_ctor_ref = Napi::Persistent(_Magick_ColorGray_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[3] = _Magick_ColorGray_ctor_ref;
/* Class: ColorHSL (_Magick_ColorHSL) */
// jsnapi_registerclass
Napi::Function _Magick_ColorHSL_ctor = _Magick_ColorHSL_inst::GetClass(env);
Magick.Set("ColorHSL", _Magick_ColorHSL_ctor);
if (SWIGTYPE_p_Magick__ColorHSL->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ColorHSL->clientdata = new size_t(4);
}
Napi::FunctionReference *_Magick_ColorHSL_ctor_ref = new Napi::FunctionReference();
*_Magick_ColorHSL_ctor_ref = Napi::Persistent(_Magick_ColorHSL_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[4] = _Magick_ColorHSL_ctor_ref;
/* Class: ColorMono (_Magick_ColorMono) */
// jsnapi_registerclass
Napi::Function _Magick_ColorMono_ctor = _Magick_ColorMono_inst::GetClass(env);
Magick.Set("ColorMono", _Magick_ColorMono_ctor);
if (SWIGTYPE_p_Magick__ColorMono->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ColorMono->clientdata = new size_t(5);
}
Napi::FunctionReference *_Magick_ColorMono_ctor_ref = new Napi::FunctionReference();
*_Magick_ColorMono_ctor_ref = Napi::Persistent(_Magick_ColorMono_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[5] = _Magick_ColorMono_ctor_ref;
/* Class: ColorRGB (_Magick_ColorRGB) */
// jsnapi_registerclass
Napi::Function _Magick_ColorRGB_ctor = _Magick_ColorRGB_inst::GetClass(env);
Magick.Set("ColorRGB", _Magick_ColorRGB_ctor);
if (SWIGTYPE_p_Magick__ColorRGB->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ColorRGB->clientdata = new size_t(6);
}
Napi::FunctionReference *_Magick_ColorRGB_ctor_ref = new Napi::FunctionReference();
*_Magick_ColorRGB_ctor_ref = Napi::Persistent(_Magick_ColorRGB_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[6] = _Magick_ColorRGB_ctor_ref;
/* Class: ColorYUV (_Magick_ColorYUV) */
// jsnapi_registerclass
Napi::Function _Magick_ColorYUV_ctor = _Magick_ColorYUV_inst::GetClass(env);
Magick.Set("ColorYUV", _Magick_ColorYUV_ctor);
if (SWIGTYPE_p_Magick__ColorYUV->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ColorYUV->clientdata = new size_t(7);
}
Napi::FunctionReference *_Magick_ColorYUV_ctor_ref = new Napi::FunctionReference();
*_Magick_ColorYUV_ctor_ref = Napi::Persistent(_Magick_ColorYUV_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[7] = _Magick_ColorYUV_ctor_ref;
/* Class: Geometry (_Magick_Geometry) */
// jsnapi_registerclass
Napi::Function _Magick_Geometry_ctor = _Magick_Geometry_inst::GetClass(env);
Magick.Set("Geometry", _Magick_Geometry_ctor);
if (SWIGTYPE_p_Magick__Geometry->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Geometry->clientdata = new size_t(8);
}
Napi::FunctionReference *_Magick_Geometry_ctor_ref = new Napi::FunctionReference();
*_Magick_Geometry_ctor_ref = Napi::Persistent(_Magick_Geometry_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[8] = _Magick_Geometry_ctor_ref;
/* Class: Offset (_Magick_Offset) */
// jsnapi_registerclass
Napi::Function _Magick_Offset_ctor = _Magick_Offset_inst::GetClass(env);
Magick.Set("Offset", _Magick_Offset_ctor);
if (SWIGTYPE_p_Magick__Offset->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Offset->clientdata = new size_t(9);
}
Napi::FunctionReference *_Magick_Offset_ctor_ref = new Napi::FunctionReference();
*_Magick_Offset_ctor_ref = Napi::Persistent(_Magick_Offset_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[9] = _Magick_Offset_ctor_ref;
/* Class: Point (_Magick_Point) */
// jsnapi_registerclass
Napi::Function _Magick_Point_ctor = _Magick_Point_inst::GetClass(env);
Magick.Set("Point", _Magick_Point_ctor);
if (SWIGTYPE_p_Magick__Point->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Point->clientdata = new size_t(10);
}
Napi::FunctionReference *_Magick_Point_ctor_ref = new Napi::FunctionReference();
*_Magick_Point_ctor_ref = Napi::Persistent(_Magick_Point_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[10] = _Magick_Point_ctor_ref;
/* Class: Coordinate (_Magick_Coordinate) */
// jsnapi_registerclass
Napi::Function _Magick_Coordinate_ctor = _Magick_Coordinate_inst::GetClass(env);
Magick.Set("Coordinate", _Magick_Coordinate_ctor);
if (SWIGTYPE_p_Magick__Coordinate->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Coordinate->clientdata = new size_t(11);
}
Napi::FunctionReference *_Magick_Coordinate_ctor_ref = new Napi::FunctionReference();
*_Magick_Coordinate_ctor_ref = Napi::Persistent(_Magick_Coordinate_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[11] = _Magick_Coordinate_ctor_ref;
/* Class: DrawableBase (_Magick_DrawableBase) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableBase_ctor = _Magick_DrawableBase_inst::GetClass(env);
Magick.Set("DrawableBase", _Magick_DrawableBase_ctor);
if (SWIGTYPE_p_Magick__DrawableBase->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableBase->clientdata = new size_t(12);
}
Napi::FunctionReference *_Magick_DrawableBase_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableBase_ctor_ref = Napi::Persistent(_Magick_DrawableBase_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[12] = _Magick_DrawableBase_ctor_ref;
/* Class: Drawable (_Magick_Drawable) */
// jsnapi_registerclass
Napi::Function _Magick_Drawable_ctor = _Magick_Drawable_inst::GetClass(env);
Magick.Set("Drawable", _Magick_Drawable_ctor);
if (SWIGTYPE_p_Magick__Drawable->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Drawable->clientdata = new size_t(13);
}
Napi::FunctionReference *_Magick_Drawable_ctor_ref = new Napi::FunctionReference();
*_Magick_Drawable_ctor_ref = Napi::Persistent(_Magick_Drawable_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[13] = _Magick_Drawable_ctor_ref;
/* Class: VPathBase (_Magick_VPathBase) */
// jsnapi_registerclass
Napi::Function _Magick_VPathBase_ctor = _Magick_VPathBase_inst::GetClass(env);
Magick.Set("VPathBase", _Magick_VPathBase_ctor);
if (SWIGTYPE_p_Magick__VPathBase->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__VPathBase->clientdata = new size_t(14);
}
Napi::FunctionReference *_Magick_VPathBase_ctor_ref = new Napi::FunctionReference();
*_Magick_VPathBase_ctor_ref = Napi::Persistent(_Magick_VPathBase_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[14] = _Magick_VPathBase_ctor_ref;
/* Class: VPath (_Magick_VPath) */
// jsnapi_registerclass
Napi::Function _Magick_VPath_ctor = _Magick_VPath_inst::GetClass(env);
Magick.Set("VPath", _Magick_VPath_ctor);
if (SWIGTYPE_p_Magick__VPath->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__VPath->clientdata = new size_t(15);
}
Napi::FunctionReference *_Magick_VPath_ctor_ref = new Napi::FunctionReference();
*_Magick_VPath_ctor_ref = Napi::Persistent(_Magick_VPath_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[15] = _Magick_VPath_ctor_ref;
/* Class: DrawableAffine (_Magick_DrawableAffine) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableAffine_ctor = _Magick_DrawableAffine_inst::GetClass(env);
Magick.Set("DrawableAffine", _Magick_DrawableAffine_ctor);
if (SWIGTYPE_p_Magick__DrawableAffine->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableAffine->clientdata = new size_t(16);
}
Napi::FunctionReference *_Magick_DrawableAffine_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableAffine_ctor_ref = Napi::Persistent(_Magick_DrawableAffine_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[16] = _Magick_DrawableAffine_ctor_ref;
/* Class: DrawableAlpha (_Magick_DrawableAlpha) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableAlpha_ctor = _Magick_DrawableAlpha_inst::GetClass(env);
Magick.Set("DrawableAlpha", _Magick_DrawableAlpha_ctor);
if (SWIGTYPE_p_Magick__DrawableAlpha->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableAlpha->clientdata = new size_t(17);
}
Napi::FunctionReference *_Magick_DrawableAlpha_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableAlpha_ctor_ref = Napi::Persistent(_Magick_DrawableAlpha_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[17] = _Magick_DrawableAlpha_ctor_ref;
/* Class: DrawableArc (_Magick_DrawableArc) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableArc_ctor = _Magick_DrawableArc_inst::GetClass(env);
Magick.Set("DrawableArc", _Magick_DrawableArc_ctor);
if (SWIGTYPE_p_Magick__DrawableArc->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableArc->clientdata = new size_t(18);
}
Napi::FunctionReference *_Magick_DrawableArc_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableArc_ctor_ref = Napi::Persistent(_Magick_DrawableArc_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[18] = _Magick_DrawableArc_ctor_ref;
/* Class: DrawableBezier (_Magick_DrawableBezier) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableBezier_ctor = _Magick_DrawableBezier_inst::GetClass(env);
Magick.Set("DrawableBezier", _Magick_DrawableBezier_ctor);
if (SWIGTYPE_p_Magick__DrawableBezier->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableBezier->clientdata = new size_t(19);
}
Napi::FunctionReference *_Magick_DrawableBezier_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableBezier_ctor_ref = Napi::Persistent(_Magick_DrawableBezier_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[19] = _Magick_DrawableBezier_ctor_ref;
/* Class: DrawableBorderColor (_Magick_DrawableBorderColor) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableBorderColor_ctor = _Magick_DrawableBorderColor_inst::GetClass(env);
Magick.Set("DrawableBorderColor", _Magick_DrawableBorderColor_ctor);
if (SWIGTYPE_p_Magick__DrawableBorderColor->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableBorderColor->clientdata = new size_t(20);
}
Napi::FunctionReference *_Magick_DrawableBorderColor_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableBorderColor_ctor_ref = Napi::Persistent(_Magick_DrawableBorderColor_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[20] = _Magick_DrawableBorderColor_ctor_ref;
/* Class: DrawableClipRule (_Magick_DrawableClipRule) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableClipRule_ctor = _Magick_DrawableClipRule_inst::GetClass(env);
Magick.Set("DrawableClipRule", _Magick_DrawableClipRule_ctor);
if (SWIGTYPE_p_Magick__DrawableClipRule->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableClipRule->clientdata = new size_t(21);
}
Napi::FunctionReference *_Magick_DrawableClipRule_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableClipRule_ctor_ref = Napi::Persistent(_Magick_DrawableClipRule_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[21] = _Magick_DrawableClipRule_ctor_ref;
/* Class: DrawableClipUnits (_Magick_DrawableClipUnits) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableClipUnits_ctor = _Magick_DrawableClipUnits_inst::GetClass(env);
Magick.Set("DrawableClipUnits", _Magick_DrawableClipUnits_ctor);
if (SWIGTYPE_p_Magick__DrawableClipUnits->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableClipUnits->clientdata = new size_t(22);
}
Napi::FunctionReference *_Magick_DrawableClipUnits_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableClipUnits_ctor_ref = Napi::Persistent(_Magick_DrawableClipUnits_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[22] = _Magick_DrawableClipUnits_ctor_ref;
/* Class: DrawablePopClipPath (_Magick_DrawablePopClipPath) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePopClipPath_ctor = _Magick_DrawablePopClipPath_inst::GetClass(env);
Magick.Set("DrawablePopClipPath", _Magick_DrawablePopClipPath_ctor);
if (SWIGTYPE_p_Magick__DrawablePopClipPath->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePopClipPath->clientdata = new size_t(23);
}
Napi::FunctionReference *_Magick_DrawablePopClipPath_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePopClipPath_ctor_ref = Napi::Persistent(_Magick_DrawablePopClipPath_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[23] = _Magick_DrawablePopClipPath_ctor_ref;
/* Class: DrawablePushClipPath (_Magick_DrawablePushClipPath) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePushClipPath_ctor = _Magick_DrawablePushClipPath_inst::GetClass(env);
Magick.Set("DrawablePushClipPath", _Magick_DrawablePushClipPath_ctor);
if (SWIGTYPE_p_Magick__DrawablePushClipPath->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePushClipPath->clientdata = new size_t(24);
}
Napi::FunctionReference *_Magick_DrawablePushClipPath_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePushClipPath_ctor_ref = Napi::Persistent(_Magick_DrawablePushClipPath_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[24] = _Magick_DrawablePushClipPath_ctor_ref;
/* Class: DrawableClipPath (_Magick_DrawableClipPath) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableClipPath_ctor = _Magick_DrawableClipPath_inst::GetClass(env);
Magick.Set("DrawableClipPath", _Magick_DrawableClipPath_ctor);
if (SWIGTYPE_p_Magick__DrawableClipPath->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableClipPath->clientdata = new size_t(25);
}
Napi::FunctionReference *_Magick_DrawableClipPath_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableClipPath_ctor_ref = Napi::Persistent(_Magick_DrawableClipPath_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[25] = _Magick_DrawableClipPath_ctor_ref;
/* Class: DrawableCircle (_Magick_DrawableCircle) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableCircle_ctor = _Magick_DrawableCircle_inst::GetClass(env);
Magick.Set("DrawableCircle", _Magick_DrawableCircle_ctor);
if (SWIGTYPE_p_Magick__DrawableCircle->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableCircle->clientdata = new size_t(26);
}
Napi::FunctionReference *_Magick_DrawableCircle_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableCircle_ctor_ref = Napi::Persistent(_Magick_DrawableCircle_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[26] = _Magick_DrawableCircle_ctor_ref;
/* Class: DrawableColor (_Magick_DrawableColor) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableColor_ctor = _Magick_DrawableColor_inst::GetClass(env);
Magick.Set("DrawableColor", _Magick_DrawableColor_ctor);
if (SWIGTYPE_p_Magick__DrawableColor->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableColor->clientdata = new size_t(27);
}
Napi::FunctionReference *_Magick_DrawableColor_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableColor_ctor_ref = Napi::Persistent(_Magick_DrawableColor_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[27] = _Magick_DrawableColor_ctor_ref;
/* Class: DrawableCompositeImage (_Magick_DrawableCompositeImage) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableCompositeImage_ctor = _Magick_DrawableCompositeImage_inst::GetClass(env);
Magick.Set("DrawableCompositeImage", _Magick_DrawableCompositeImage_ctor);
if (SWIGTYPE_p_Magick__DrawableCompositeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableCompositeImage->clientdata = new size_t(28);
}
Napi::FunctionReference *_Magick_DrawableCompositeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableCompositeImage_ctor_ref = Napi::Persistent(_Magick_DrawableCompositeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[28] = _Magick_DrawableCompositeImage_ctor_ref;
/* Class: DrawableDensity (_Magick_DrawableDensity) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableDensity_ctor = _Magick_DrawableDensity_inst::GetClass(env);
Magick.Set("DrawableDensity", _Magick_DrawableDensity_ctor);
if (SWIGTYPE_p_Magick__DrawableDensity->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableDensity->clientdata = new size_t(29);
}
Napi::FunctionReference *_Magick_DrawableDensity_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableDensity_ctor_ref = Napi::Persistent(_Magick_DrawableDensity_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[29] = _Magick_DrawableDensity_ctor_ref;
/* Class: DrawableEllipse (_Magick_DrawableEllipse) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableEllipse_ctor = _Magick_DrawableEllipse_inst::GetClass(env);
Magick.Set("DrawableEllipse", _Magick_DrawableEllipse_ctor);
if (SWIGTYPE_p_Magick__DrawableEllipse->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableEllipse->clientdata = new size_t(30);
}
Napi::FunctionReference *_Magick_DrawableEllipse_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableEllipse_ctor_ref = Napi::Persistent(_Magick_DrawableEllipse_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[30] = _Magick_DrawableEllipse_ctor_ref;
/* Class: DrawableFillColor (_Magick_DrawableFillColor) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableFillColor_ctor = _Magick_DrawableFillColor_inst::GetClass(env);
Magick.Set("DrawableFillColor", _Magick_DrawableFillColor_ctor);
if (SWIGTYPE_p_Magick__DrawableFillColor->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableFillColor->clientdata = new size_t(31);
}
Napi::FunctionReference *_Magick_DrawableFillColor_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableFillColor_ctor_ref = Napi::Persistent(_Magick_DrawableFillColor_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[31] = _Magick_DrawableFillColor_ctor_ref;
/* Class: DrawableFillPatternUrl (_Magick_DrawableFillPatternUrl) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableFillPatternUrl_ctor = _Magick_DrawableFillPatternUrl_inst::GetClass(env);
Magick.Set("DrawableFillPatternUrl", _Magick_DrawableFillPatternUrl_ctor);
if (SWIGTYPE_p_Magick__DrawableFillPatternUrl->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableFillPatternUrl->clientdata = new size_t(32);
}
Napi::FunctionReference *_Magick_DrawableFillPatternUrl_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableFillPatternUrl_ctor_ref = Napi::Persistent(_Magick_DrawableFillPatternUrl_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[32] = _Magick_DrawableFillPatternUrl_ctor_ref;
/* Class: DrawableFillRule (_Magick_DrawableFillRule) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableFillRule_ctor = _Magick_DrawableFillRule_inst::GetClass(env);
Magick.Set("DrawableFillRule", _Magick_DrawableFillRule_ctor);
if (SWIGTYPE_p_Magick__DrawableFillRule->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableFillRule->clientdata = new size_t(33);
}
Napi::FunctionReference *_Magick_DrawableFillRule_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableFillRule_ctor_ref = Napi::Persistent(_Magick_DrawableFillRule_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[33] = _Magick_DrawableFillRule_ctor_ref;
/* Class: DrawableFillOpacity (_Magick_DrawableFillOpacity) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableFillOpacity_ctor = _Magick_DrawableFillOpacity_inst::GetClass(env);
Magick.Set("DrawableFillOpacity", _Magick_DrawableFillOpacity_ctor);
if (SWIGTYPE_p_Magick__DrawableFillOpacity->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableFillOpacity->clientdata = new size_t(34);
}
Napi::FunctionReference *_Magick_DrawableFillOpacity_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableFillOpacity_ctor_ref = Napi::Persistent(_Magick_DrawableFillOpacity_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[34] = _Magick_DrawableFillOpacity_ctor_ref;
/* Class: DrawableFont (_Magick_DrawableFont) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableFont_ctor = _Magick_DrawableFont_inst::GetClass(env);
Magick.Set("DrawableFont", _Magick_DrawableFont_ctor);
if (SWIGTYPE_p_Magick__DrawableFont->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableFont->clientdata = new size_t(35);
}
Napi::FunctionReference *_Magick_DrawableFont_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableFont_ctor_ref = Napi::Persistent(_Magick_DrawableFont_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[35] = _Magick_DrawableFont_ctor_ref;
/* Class: DrawableGravity (_Magick_DrawableGravity) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableGravity_ctor = _Magick_DrawableGravity_inst::GetClass(env);
Magick.Set("DrawableGravity", _Magick_DrawableGravity_ctor);
if (SWIGTYPE_p_Magick__DrawableGravity->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableGravity->clientdata = new size_t(36);
}
Napi::FunctionReference *_Magick_DrawableGravity_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableGravity_ctor_ref = Napi::Persistent(_Magick_DrawableGravity_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[36] = _Magick_DrawableGravity_ctor_ref;
/* Class: DrawableLine (_Magick_DrawableLine) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableLine_ctor = _Magick_DrawableLine_inst::GetClass(env);
Magick.Set("DrawableLine", _Magick_DrawableLine_ctor);
if (SWIGTYPE_p_Magick__DrawableLine->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableLine->clientdata = new size_t(37);
}
Napi::FunctionReference *_Magick_DrawableLine_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableLine_ctor_ref = Napi::Persistent(_Magick_DrawableLine_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[37] = _Magick_DrawableLine_ctor_ref;
/* Class: DrawablePath (_Magick_DrawablePath) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePath_ctor = _Magick_DrawablePath_inst::GetClass(env);
Magick.Set("DrawablePath", _Magick_DrawablePath_ctor);
if (SWIGTYPE_p_Magick__DrawablePath->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePath->clientdata = new size_t(38);
}
Napi::FunctionReference *_Magick_DrawablePath_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePath_ctor_ref = Napi::Persistent(_Magick_DrawablePath_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[38] = _Magick_DrawablePath_ctor_ref;
/* Class: DrawablePoint (_Magick_DrawablePoint) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePoint_ctor = _Magick_DrawablePoint_inst::GetClass(env);
Magick.Set("DrawablePoint", _Magick_DrawablePoint_ctor);
if (SWIGTYPE_p_Magick__DrawablePoint->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePoint->clientdata = new size_t(39);
}
Napi::FunctionReference *_Magick_DrawablePoint_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePoint_ctor_ref = Napi::Persistent(_Magick_DrawablePoint_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[39] = _Magick_DrawablePoint_ctor_ref;
/* Class: DrawablePointSize (_Magick_DrawablePointSize) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePointSize_ctor = _Magick_DrawablePointSize_inst::GetClass(env);
Magick.Set("DrawablePointSize", _Magick_DrawablePointSize_ctor);
if (SWIGTYPE_p_Magick__DrawablePointSize->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePointSize->clientdata = new size_t(40);
}
Napi::FunctionReference *_Magick_DrawablePointSize_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePointSize_ctor_ref = Napi::Persistent(_Magick_DrawablePointSize_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[40] = _Magick_DrawablePointSize_ctor_ref;
/* Class: DrawablePolygon (_Magick_DrawablePolygon) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePolygon_ctor = _Magick_DrawablePolygon_inst::GetClass(env);
Magick.Set("DrawablePolygon", _Magick_DrawablePolygon_ctor);
if (SWIGTYPE_p_Magick__DrawablePolygon->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePolygon->clientdata = new size_t(41);
}
Napi::FunctionReference *_Magick_DrawablePolygon_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePolygon_ctor_ref = Napi::Persistent(_Magick_DrawablePolygon_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[41] = _Magick_DrawablePolygon_ctor_ref;
/* Class: DrawablePolyline (_Magick_DrawablePolyline) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePolyline_ctor = _Magick_DrawablePolyline_inst::GetClass(env);
Magick.Set("DrawablePolyline", _Magick_DrawablePolyline_ctor);
if (SWIGTYPE_p_Magick__DrawablePolyline->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePolyline->clientdata = new size_t(42);
}
Napi::FunctionReference *_Magick_DrawablePolyline_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePolyline_ctor_ref = Napi::Persistent(_Magick_DrawablePolyline_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[42] = _Magick_DrawablePolyline_ctor_ref;
/* Class: DrawablePopGraphicContext (_Magick_DrawablePopGraphicContext) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePopGraphicContext_ctor = _Magick_DrawablePopGraphicContext_inst::GetClass(env);
Magick.Set("DrawablePopGraphicContext", _Magick_DrawablePopGraphicContext_ctor);
if (SWIGTYPE_p_Magick__DrawablePopGraphicContext->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePopGraphicContext->clientdata = new size_t(43);
}
Napi::FunctionReference *_Magick_DrawablePopGraphicContext_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePopGraphicContext_ctor_ref = Napi::Persistent(_Magick_DrawablePopGraphicContext_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[43] = _Magick_DrawablePopGraphicContext_ctor_ref;
/* Class: DrawablePushGraphicContext (_Magick_DrawablePushGraphicContext) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePushGraphicContext_ctor = _Magick_DrawablePushGraphicContext_inst::GetClass(env);
Magick.Set("DrawablePushGraphicContext", _Magick_DrawablePushGraphicContext_ctor);
if (SWIGTYPE_p_Magick__DrawablePushGraphicContext->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePushGraphicContext->clientdata = new size_t(44);
}
Napi::FunctionReference *_Magick_DrawablePushGraphicContext_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePushGraphicContext_ctor_ref = Napi::Persistent(_Magick_DrawablePushGraphicContext_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[44] = _Magick_DrawablePushGraphicContext_ctor_ref;
/* Class: DrawablePopPattern (_Magick_DrawablePopPattern) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePopPattern_ctor = _Magick_DrawablePopPattern_inst::GetClass(env);
Magick.Set("DrawablePopPattern", _Magick_DrawablePopPattern_ctor);
if (SWIGTYPE_p_Magick__DrawablePopPattern->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePopPattern->clientdata = new size_t(45);
}
Napi::FunctionReference *_Magick_DrawablePopPattern_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePopPattern_ctor_ref = Napi::Persistent(_Magick_DrawablePopPattern_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[45] = _Magick_DrawablePopPattern_ctor_ref;
/* Class: DrawablePushPattern (_Magick_DrawablePushPattern) */
// jsnapi_registerclass
Napi::Function _Magick_DrawablePushPattern_ctor = _Magick_DrawablePushPattern_inst::GetClass(env);
Magick.Set("DrawablePushPattern", _Magick_DrawablePushPattern_ctor);
if (SWIGTYPE_p_Magick__DrawablePushPattern->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawablePushPattern->clientdata = new size_t(46);
}
Napi::FunctionReference *_Magick_DrawablePushPattern_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawablePushPattern_ctor_ref = Napi::Persistent(_Magick_DrawablePushPattern_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[46] = _Magick_DrawablePushPattern_ctor_ref;
/* Class: DrawableRectangle (_Magick_DrawableRectangle) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableRectangle_ctor = _Magick_DrawableRectangle_inst::GetClass(env);
Magick.Set("DrawableRectangle", _Magick_DrawableRectangle_ctor);
if (SWIGTYPE_p_Magick__DrawableRectangle->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableRectangle->clientdata = new size_t(47);
}
Napi::FunctionReference *_Magick_DrawableRectangle_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableRectangle_ctor_ref = Napi::Persistent(_Magick_DrawableRectangle_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[47] = _Magick_DrawableRectangle_ctor_ref;
/* Class: DrawableRotation (_Magick_DrawableRotation) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableRotation_ctor = _Magick_DrawableRotation_inst::GetClass(env);
Magick.Set("DrawableRotation", _Magick_DrawableRotation_ctor);
if (SWIGTYPE_p_Magick__DrawableRotation->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableRotation->clientdata = new size_t(48);
}
Napi::FunctionReference *_Magick_DrawableRotation_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableRotation_ctor_ref = Napi::Persistent(_Magick_DrawableRotation_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[48] = _Magick_DrawableRotation_ctor_ref;
/* Class: DrawableRoundRectangle (_Magick_DrawableRoundRectangle) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableRoundRectangle_ctor = _Magick_DrawableRoundRectangle_inst::GetClass(env);
Magick.Set("DrawableRoundRectangle", _Magick_DrawableRoundRectangle_ctor);
if (SWIGTYPE_p_Magick__DrawableRoundRectangle->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableRoundRectangle->clientdata = new size_t(49);
}
Napi::FunctionReference *_Magick_DrawableRoundRectangle_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableRoundRectangle_ctor_ref = Napi::Persistent(_Magick_DrawableRoundRectangle_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[49] = _Magick_DrawableRoundRectangle_ctor_ref;
/* Class: DrawableScaling (_Magick_DrawableScaling) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableScaling_ctor = _Magick_DrawableScaling_inst::GetClass(env);
Magick.Set("DrawableScaling", _Magick_DrawableScaling_ctor);
if (SWIGTYPE_p_Magick__DrawableScaling->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableScaling->clientdata = new size_t(50);
}
Napi::FunctionReference *_Magick_DrawableScaling_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableScaling_ctor_ref = Napi::Persistent(_Magick_DrawableScaling_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[50] = _Magick_DrawableScaling_ctor_ref;
/* Class: DrawableSkewX (_Magick_DrawableSkewX) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableSkewX_ctor = _Magick_DrawableSkewX_inst::GetClass(env);
Magick.Set("DrawableSkewX", _Magick_DrawableSkewX_ctor);
if (SWIGTYPE_p_Magick__DrawableSkewX->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableSkewX->clientdata = new size_t(51);
}
Napi::FunctionReference *_Magick_DrawableSkewX_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableSkewX_ctor_ref = Napi::Persistent(_Magick_DrawableSkewX_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[51] = _Magick_DrawableSkewX_ctor_ref;
/* Class: DrawableSkewY (_Magick_DrawableSkewY) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableSkewY_ctor = _Magick_DrawableSkewY_inst::GetClass(env);
Magick.Set("DrawableSkewY", _Magick_DrawableSkewY_ctor);
if (SWIGTYPE_p_Magick__DrawableSkewY->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableSkewY->clientdata = new size_t(52);
}
Napi::FunctionReference *_Magick_DrawableSkewY_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableSkewY_ctor_ref = Napi::Persistent(_Magick_DrawableSkewY_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[52] = _Magick_DrawableSkewY_ctor_ref;
/* Class: DrawableStrokeDashArray (_Magick_DrawableStrokeDashArray) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeDashArray_ctor = _Magick_DrawableStrokeDashArray_inst::GetClass(env);
Magick.Set("DrawableStrokeDashArray", _Magick_DrawableStrokeDashArray_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeDashArray->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeDashArray->clientdata = new size_t(53);
}
Napi::FunctionReference *_Magick_DrawableStrokeDashArray_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeDashArray_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeDashArray_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[53] = _Magick_DrawableStrokeDashArray_ctor_ref;
/* Class: DrawableStrokeDashOffset (_Magick_DrawableStrokeDashOffset) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeDashOffset_ctor = _Magick_DrawableStrokeDashOffset_inst::GetClass(env);
Magick.Set("DrawableStrokeDashOffset", _Magick_DrawableStrokeDashOffset_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeDashOffset->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeDashOffset->clientdata = new size_t(54);
}
Napi::FunctionReference *_Magick_DrawableStrokeDashOffset_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeDashOffset_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeDashOffset_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[54] = _Magick_DrawableStrokeDashOffset_ctor_ref;
/* Class: DrawableStrokeLineCap (_Magick_DrawableStrokeLineCap) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeLineCap_ctor = _Magick_DrawableStrokeLineCap_inst::GetClass(env);
Magick.Set("DrawableStrokeLineCap", _Magick_DrawableStrokeLineCap_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeLineCap->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeLineCap->clientdata = new size_t(55);
}
Napi::FunctionReference *_Magick_DrawableStrokeLineCap_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeLineCap_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeLineCap_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[55] = _Magick_DrawableStrokeLineCap_ctor_ref;
/* Class: DrawableStrokeLineJoin (_Magick_DrawableStrokeLineJoin) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeLineJoin_ctor = _Magick_DrawableStrokeLineJoin_inst::GetClass(env);
Magick.Set("DrawableStrokeLineJoin", _Magick_DrawableStrokeLineJoin_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeLineJoin->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeLineJoin->clientdata = new size_t(56);
}
Napi::FunctionReference *_Magick_DrawableStrokeLineJoin_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeLineJoin_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeLineJoin_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[56] = _Magick_DrawableStrokeLineJoin_ctor_ref;
/* Class: DrawableMiterLimit (_Magick_DrawableMiterLimit) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableMiterLimit_ctor = _Magick_DrawableMiterLimit_inst::GetClass(env);
Magick.Set("DrawableMiterLimit", _Magick_DrawableMiterLimit_ctor);
if (SWIGTYPE_p_Magick__DrawableMiterLimit->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableMiterLimit->clientdata = new size_t(57);
}
Napi::FunctionReference *_Magick_DrawableMiterLimit_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableMiterLimit_ctor_ref = Napi::Persistent(_Magick_DrawableMiterLimit_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[57] = _Magick_DrawableMiterLimit_ctor_ref;
/* Class: DrawableStrokePatternUrl (_Magick_DrawableStrokePatternUrl) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokePatternUrl_ctor = _Magick_DrawableStrokePatternUrl_inst::GetClass(env);
Magick.Set("DrawableStrokePatternUrl", _Magick_DrawableStrokePatternUrl_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokePatternUrl->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokePatternUrl->clientdata = new size_t(58);
}
Napi::FunctionReference *_Magick_DrawableStrokePatternUrl_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokePatternUrl_ctor_ref = Napi::Persistent(_Magick_DrawableStrokePatternUrl_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[58] = _Magick_DrawableStrokePatternUrl_ctor_ref;
/* Class: DrawableStrokeAntialias (_Magick_DrawableStrokeAntialias) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeAntialias_ctor = _Magick_DrawableStrokeAntialias_inst::GetClass(env);
Magick.Set("DrawableStrokeAntialias", _Magick_DrawableStrokeAntialias_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeAntialias->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeAntialias->clientdata = new size_t(59);
}
Napi::FunctionReference *_Magick_DrawableStrokeAntialias_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeAntialias_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeAntialias_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[59] = _Magick_DrawableStrokeAntialias_ctor_ref;
/* Class: DrawableStrokeColor (_Magick_DrawableStrokeColor) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeColor_ctor = _Magick_DrawableStrokeColor_inst::GetClass(env);
Magick.Set("DrawableStrokeColor", _Magick_DrawableStrokeColor_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeColor->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeColor->clientdata = new size_t(60);
}
Napi::FunctionReference *_Magick_DrawableStrokeColor_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeColor_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeColor_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[60] = _Magick_DrawableStrokeColor_ctor_ref;
/* Class: DrawableStrokeOpacity (_Magick_DrawableStrokeOpacity) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeOpacity_ctor = _Magick_DrawableStrokeOpacity_inst::GetClass(env);
Magick.Set("DrawableStrokeOpacity", _Magick_DrawableStrokeOpacity_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeOpacity->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeOpacity->clientdata = new size_t(61);
}
Napi::FunctionReference *_Magick_DrawableStrokeOpacity_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeOpacity_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeOpacity_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[61] = _Magick_DrawableStrokeOpacity_ctor_ref;
/* Class: DrawableStrokeWidth (_Magick_DrawableStrokeWidth) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableStrokeWidth_ctor = _Magick_DrawableStrokeWidth_inst::GetClass(env);
Magick.Set("DrawableStrokeWidth", _Magick_DrawableStrokeWidth_ctor);
if (SWIGTYPE_p_Magick__DrawableStrokeWidth->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableStrokeWidth->clientdata = new size_t(62);
}
Napi::FunctionReference *_Magick_DrawableStrokeWidth_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableStrokeWidth_ctor_ref = Napi::Persistent(_Magick_DrawableStrokeWidth_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[62] = _Magick_DrawableStrokeWidth_ctor_ref;
/* Class: DrawableText (_Magick_DrawableText) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableText_ctor = _Magick_DrawableText_inst::GetClass(env);
Magick.Set("DrawableText", _Magick_DrawableText_ctor);
if (SWIGTYPE_p_Magick__DrawableText->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableText->clientdata = new size_t(63);
}
Napi::FunctionReference *_Magick_DrawableText_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableText_ctor_ref = Napi::Persistent(_Magick_DrawableText_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[63] = _Magick_DrawableText_ctor_ref;
/* Class: DrawableTextAlignment (_Magick_DrawableTextAlignment) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextAlignment_ctor = _Magick_DrawableTextAlignment_inst::GetClass(env);
Magick.Set("DrawableTextAlignment", _Magick_DrawableTextAlignment_ctor);
if (SWIGTYPE_p_Magick__DrawableTextAlignment->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextAlignment->clientdata = new size_t(64);
}
Napi::FunctionReference *_Magick_DrawableTextAlignment_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextAlignment_ctor_ref = Napi::Persistent(_Magick_DrawableTextAlignment_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[64] = _Magick_DrawableTextAlignment_ctor_ref;
/* Class: DrawableTextAntialias (_Magick_DrawableTextAntialias) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextAntialias_ctor = _Magick_DrawableTextAntialias_inst::GetClass(env);
Magick.Set("DrawableTextAntialias", _Magick_DrawableTextAntialias_ctor);
if (SWIGTYPE_p_Magick__DrawableTextAntialias->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextAntialias->clientdata = new size_t(65);
}
Napi::FunctionReference *_Magick_DrawableTextAntialias_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextAntialias_ctor_ref = Napi::Persistent(_Magick_DrawableTextAntialias_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[65] = _Magick_DrawableTextAntialias_ctor_ref;
/* Class: DrawableTextDecoration (_Magick_DrawableTextDecoration) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextDecoration_ctor = _Magick_DrawableTextDecoration_inst::GetClass(env);
Magick.Set("DrawableTextDecoration", _Magick_DrawableTextDecoration_ctor);
if (SWIGTYPE_p_Magick__DrawableTextDecoration->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextDecoration->clientdata = new size_t(66);
}
Napi::FunctionReference *_Magick_DrawableTextDecoration_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextDecoration_ctor_ref = Napi::Persistent(_Magick_DrawableTextDecoration_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[66] = _Magick_DrawableTextDecoration_ctor_ref;
/* Class: DrawableTextDirection (_Magick_DrawableTextDirection) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextDirection_ctor = _Magick_DrawableTextDirection_inst::GetClass(env);
Magick.Set("DrawableTextDirection", _Magick_DrawableTextDirection_ctor);
if (SWIGTYPE_p_Magick__DrawableTextDirection->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextDirection->clientdata = new size_t(67);
}
Napi::FunctionReference *_Magick_DrawableTextDirection_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextDirection_ctor_ref = Napi::Persistent(_Magick_DrawableTextDirection_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[67] = _Magick_DrawableTextDirection_ctor_ref;
/* Class: DrawableTextInterlineSpacing (_Magick_DrawableTextInterlineSpacing) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextInterlineSpacing_ctor = _Magick_DrawableTextInterlineSpacing_inst::GetClass(env);
Magick.Set("DrawableTextInterlineSpacing", _Magick_DrawableTextInterlineSpacing_ctor);
if (SWIGTYPE_p_Magick__DrawableTextInterlineSpacing->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextInterlineSpacing->clientdata = new size_t(68);
}
Napi::FunctionReference *_Magick_DrawableTextInterlineSpacing_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextInterlineSpacing_ctor_ref = Napi::Persistent(_Magick_DrawableTextInterlineSpacing_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[68] = _Magick_DrawableTextInterlineSpacing_ctor_ref;
/* Class: DrawableTextInterwordSpacing (_Magick_DrawableTextInterwordSpacing) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextInterwordSpacing_ctor = _Magick_DrawableTextInterwordSpacing_inst::GetClass(env);
Magick.Set("DrawableTextInterwordSpacing", _Magick_DrawableTextInterwordSpacing_ctor);
if (SWIGTYPE_p_Magick__DrawableTextInterwordSpacing->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextInterwordSpacing->clientdata = new size_t(69);
}
Napi::FunctionReference *_Magick_DrawableTextInterwordSpacing_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextInterwordSpacing_ctor_ref = Napi::Persistent(_Magick_DrawableTextInterwordSpacing_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[69] = _Magick_DrawableTextInterwordSpacing_ctor_ref;
/* Class: DrawableTextKerning (_Magick_DrawableTextKerning) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextKerning_ctor = _Magick_DrawableTextKerning_inst::GetClass(env);
Magick.Set("DrawableTextKerning", _Magick_DrawableTextKerning_ctor);
if (SWIGTYPE_p_Magick__DrawableTextKerning->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextKerning->clientdata = new size_t(70);
}
Napi::FunctionReference *_Magick_DrawableTextKerning_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextKerning_ctor_ref = Napi::Persistent(_Magick_DrawableTextKerning_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[70] = _Magick_DrawableTextKerning_ctor_ref;
/* Class: DrawableTextUnderColor (_Magick_DrawableTextUnderColor) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTextUnderColor_ctor = _Magick_DrawableTextUnderColor_inst::GetClass(env);
Magick.Set("DrawableTextUnderColor", _Magick_DrawableTextUnderColor_ctor);
if (SWIGTYPE_p_Magick__DrawableTextUnderColor->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTextUnderColor->clientdata = new size_t(71);
}
Napi::FunctionReference *_Magick_DrawableTextUnderColor_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTextUnderColor_ctor_ref = Napi::Persistent(_Magick_DrawableTextUnderColor_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[71] = _Magick_DrawableTextUnderColor_ctor_ref;
/* Class: DrawableTranslation (_Magick_DrawableTranslation) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableTranslation_ctor = _Magick_DrawableTranslation_inst::GetClass(env);
Magick.Set("DrawableTranslation", _Magick_DrawableTranslation_ctor);
if (SWIGTYPE_p_Magick__DrawableTranslation->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableTranslation->clientdata = new size_t(72);
}
Napi::FunctionReference *_Magick_DrawableTranslation_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableTranslation_ctor_ref = Napi::Persistent(_Magick_DrawableTranslation_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[72] = _Magick_DrawableTranslation_ctor_ref;
/* Class: DrawableViewbox (_Magick_DrawableViewbox) */
// jsnapi_registerclass
Napi::Function _Magick_DrawableViewbox_ctor = _Magick_DrawableViewbox_inst::GetClass(env);
Magick.Set("DrawableViewbox", _Magick_DrawableViewbox_ctor);
if (SWIGTYPE_p_Magick__DrawableViewbox->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__DrawableViewbox->clientdata = new size_t(73);
}
Napi::FunctionReference *_Magick_DrawableViewbox_ctor_ref = new Napi::FunctionReference();
*_Magick_DrawableViewbox_ctor_ref = Napi::Persistent(_Magick_DrawableViewbox_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[73] = _Magick_DrawableViewbox_ctor_ref;
/* Class: PathArcArgs (_Magick_PathArcArgs) */
// jsnapi_registerclass
Napi::Function _Magick_PathArcArgs_ctor = _Magick_PathArcArgs_inst::GetClass(env);
Magick.Set("PathArcArgs", _Magick_PathArcArgs_ctor);
if (SWIGTYPE_p_Magick__PathArcArgs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathArcArgs->clientdata = new size_t(74);
}
Napi::FunctionReference *_Magick_PathArcArgs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathArcArgs_ctor_ref = Napi::Persistent(_Magick_PathArcArgs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[74] = _Magick_PathArcArgs_ctor_ref;
/* Class: PathArcAbs (_Magick_PathArcAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathArcAbs_ctor = _Magick_PathArcAbs_inst::GetClass(env);
Magick.Set("PathArcAbs", _Magick_PathArcAbs_ctor);
if (SWIGTYPE_p_Magick__PathArcAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathArcAbs->clientdata = new size_t(75);
}
Napi::FunctionReference *_Magick_PathArcAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathArcAbs_ctor_ref = Napi::Persistent(_Magick_PathArcAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[75] = _Magick_PathArcAbs_ctor_ref;
/* Class: PathArcRel (_Magick_PathArcRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathArcRel_ctor = _Magick_PathArcRel_inst::GetClass(env);
Magick.Set("PathArcRel", _Magick_PathArcRel_ctor);
if (SWIGTYPE_p_Magick__PathArcRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathArcRel->clientdata = new size_t(76);
}
Napi::FunctionReference *_Magick_PathArcRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathArcRel_ctor_ref = Napi::Persistent(_Magick_PathArcRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[76] = _Magick_PathArcRel_ctor_ref;
/* Class: PathClosePath (_Magick_PathClosePath) */
// jsnapi_registerclass
Napi::Function _Magick_PathClosePath_ctor = _Magick_PathClosePath_inst::GetClass(env);
Magick.Set("PathClosePath", _Magick_PathClosePath_ctor);
if (SWIGTYPE_p_Magick__PathClosePath->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathClosePath->clientdata = new size_t(77);
}
Napi::FunctionReference *_Magick_PathClosePath_ctor_ref = new Napi::FunctionReference();
*_Magick_PathClosePath_ctor_ref = Napi::Persistent(_Magick_PathClosePath_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[77] = _Magick_PathClosePath_ctor_ref;
/* Class: PathCurvetoArgs (_Magick_PathCurvetoArgs) */
// jsnapi_registerclass
Napi::Function _Magick_PathCurvetoArgs_ctor = _Magick_PathCurvetoArgs_inst::GetClass(env);
Magick.Set("PathCurvetoArgs", _Magick_PathCurvetoArgs_ctor);
if (SWIGTYPE_p_Magick__PathCurvetoArgs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathCurvetoArgs->clientdata = new size_t(78);
}
Napi::FunctionReference *_Magick_PathCurvetoArgs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathCurvetoArgs_ctor_ref = Napi::Persistent(_Magick_PathCurvetoArgs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[78] = _Magick_PathCurvetoArgs_ctor_ref;
/* Class: PathCurvetoAbs (_Magick_PathCurvetoAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathCurvetoAbs_ctor = _Magick_PathCurvetoAbs_inst::GetClass(env);
Magick.Set("PathCurvetoAbs", _Magick_PathCurvetoAbs_ctor);
if (SWIGTYPE_p_Magick__PathCurvetoAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathCurvetoAbs->clientdata = new size_t(79);
}
Napi::FunctionReference *_Magick_PathCurvetoAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathCurvetoAbs_ctor_ref = Napi::Persistent(_Magick_PathCurvetoAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[79] = _Magick_PathCurvetoAbs_ctor_ref;
/* Class: PathCurvetoRel (_Magick_PathCurvetoRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathCurvetoRel_ctor = _Magick_PathCurvetoRel_inst::GetClass(env);
Magick.Set("PathCurvetoRel", _Magick_PathCurvetoRel_ctor);
if (SWIGTYPE_p_Magick__PathCurvetoRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathCurvetoRel->clientdata = new size_t(80);
}
Napi::FunctionReference *_Magick_PathCurvetoRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathCurvetoRel_ctor_ref = Napi::Persistent(_Magick_PathCurvetoRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[80] = _Magick_PathCurvetoRel_ctor_ref;
/* Class: PathSmoothCurvetoAbs (_Magick_PathSmoothCurvetoAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathSmoothCurvetoAbs_ctor = _Magick_PathSmoothCurvetoAbs_inst::GetClass(env);
Magick.Set("PathSmoothCurvetoAbs", _Magick_PathSmoothCurvetoAbs_ctor);
if (SWIGTYPE_p_Magick__PathSmoothCurvetoAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathSmoothCurvetoAbs->clientdata = new size_t(81);
}
Napi::FunctionReference *_Magick_PathSmoothCurvetoAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathSmoothCurvetoAbs_ctor_ref = Napi::Persistent(_Magick_PathSmoothCurvetoAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[81] = _Magick_PathSmoothCurvetoAbs_ctor_ref;
/* Class: PathSmoothCurvetoRel (_Magick_PathSmoothCurvetoRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathSmoothCurvetoRel_ctor = _Magick_PathSmoothCurvetoRel_inst::GetClass(env);
Magick.Set("PathSmoothCurvetoRel", _Magick_PathSmoothCurvetoRel_ctor);
if (SWIGTYPE_p_Magick__PathSmoothCurvetoRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathSmoothCurvetoRel->clientdata = new size_t(82);
}
Napi::FunctionReference *_Magick_PathSmoothCurvetoRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathSmoothCurvetoRel_ctor_ref = Napi::Persistent(_Magick_PathSmoothCurvetoRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[82] = _Magick_PathSmoothCurvetoRel_ctor_ref;
/* Class: PathQuadraticCurvetoArgs (_Magick_PathQuadraticCurvetoArgs) */
// jsnapi_registerclass
Napi::Function _Magick_PathQuadraticCurvetoArgs_ctor = _Magick_PathQuadraticCurvetoArgs_inst::GetClass(env);
Magick.Set("PathQuadraticCurvetoArgs", _Magick_PathQuadraticCurvetoArgs_ctor);
if (SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathQuadraticCurvetoArgs->clientdata = new size_t(83);
}
Napi::FunctionReference *_Magick_PathQuadraticCurvetoArgs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathQuadraticCurvetoArgs_ctor_ref = Napi::Persistent(_Magick_PathQuadraticCurvetoArgs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[83] = _Magick_PathQuadraticCurvetoArgs_ctor_ref;
/* Class: PathQuadraticCurvetoAbs (_Magick_PathQuadraticCurvetoAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathQuadraticCurvetoAbs_ctor = _Magick_PathQuadraticCurvetoAbs_inst::GetClass(env);
Magick.Set("PathQuadraticCurvetoAbs", _Magick_PathQuadraticCurvetoAbs_ctor);
if (SWIGTYPE_p_Magick__PathQuadraticCurvetoAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathQuadraticCurvetoAbs->clientdata = new size_t(84);
}
Napi::FunctionReference *_Magick_PathQuadraticCurvetoAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathQuadraticCurvetoAbs_ctor_ref = Napi::Persistent(_Magick_PathQuadraticCurvetoAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[84] = _Magick_PathQuadraticCurvetoAbs_ctor_ref;
/* Class: PathQuadraticCurvetoRel (_Magick_PathQuadraticCurvetoRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathQuadraticCurvetoRel_ctor = _Magick_PathQuadraticCurvetoRel_inst::GetClass(env);
Magick.Set("PathQuadraticCurvetoRel", _Magick_PathQuadraticCurvetoRel_ctor);
if (SWIGTYPE_p_Magick__PathQuadraticCurvetoRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathQuadraticCurvetoRel->clientdata = new size_t(85);
}
Napi::FunctionReference *_Magick_PathQuadraticCurvetoRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathQuadraticCurvetoRel_ctor_ref = Napi::Persistent(_Magick_PathQuadraticCurvetoRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[85] = _Magick_PathQuadraticCurvetoRel_ctor_ref;
/* Class: PathSmoothQuadraticCurvetoAbs (_Magick_PathSmoothQuadraticCurvetoAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathSmoothQuadraticCurvetoAbs_ctor = _Magick_PathSmoothQuadraticCurvetoAbs_inst::GetClass(env);
Magick.Set("PathSmoothQuadraticCurvetoAbs", _Magick_PathSmoothQuadraticCurvetoAbs_ctor);
if (SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoAbs->clientdata = new size_t(86);
}
Napi::FunctionReference *_Magick_PathSmoothQuadraticCurvetoAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathSmoothQuadraticCurvetoAbs_ctor_ref = Napi::Persistent(_Magick_PathSmoothQuadraticCurvetoAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[86] = _Magick_PathSmoothQuadraticCurvetoAbs_ctor_ref;
/* Class: PathSmoothQuadraticCurvetoRel (_Magick_PathSmoothQuadraticCurvetoRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathSmoothQuadraticCurvetoRel_ctor = _Magick_PathSmoothQuadraticCurvetoRel_inst::GetClass(env);
Magick.Set("PathSmoothQuadraticCurvetoRel", _Magick_PathSmoothQuadraticCurvetoRel_ctor);
if (SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathSmoothQuadraticCurvetoRel->clientdata = new size_t(87);
}
Napi::FunctionReference *_Magick_PathSmoothQuadraticCurvetoRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathSmoothQuadraticCurvetoRel_ctor_ref = Napi::Persistent(_Magick_PathSmoothQuadraticCurvetoRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[87] = _Magick_PathSmoothQuadraticCurvetoRel_ctor_ref;
/* Class: PathLinetoAbs (_Magick_PathLinetoAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathLinetoAbs_ctor = _Magick_PathLinetoAbs_inst::GetClass(env);
Magick.Set("PathLinetoAbs", _Magick_PathLinetoAbs_ctor);
if (SWIGTYPE_p_Magick__PathLinetoAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathLinetoAbs->clientdata = new size_t(88);
}
Napi::FunctionReference *_Magick_PathLinetoAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathLinetoAbs_ctor_ref = Napi::Persistent(_Magick_PathLinetoAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[88] = _Magick_PathLinetoAbs_ctor_ref;
/* Class: PathLinetoRel (_Magick_PathLinetoRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathLinetoRel_ctor = _Magick_PathLinetoRel_inst::GetClass(env);
Magick.Set("PathLinetoRel", _Magick_PathLinetoRel_ctor);
if (SWIGTYPE_p_Magick__PathLinetoRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathLinetoRel->clientdata = new size_t(89);
}
Napi::FunctionReference *_Magick_PathLinetoRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathLinetoRel_ctor_ref = Napi::Persistent(_Magick_PathLinetoRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[89] = _Magick_PathLinetoRel_ctor_ref;
/* Class: PathLinetoHorizontalAbs (_Magick_PathLinetoHorizontalAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathLinetoHorizontalAbs_ctor = _Magick_PathLinetoHorizontalAbs_inst::GetClass(env);
Magick.Set("PathLinetoHorizontalAbs", _Magick_PathLinetoHorizontalAbs_ctor);
if (SWIGTYPE_p_Magick__PathLinetoHorizontalAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathLinetoHorizontalAbs->clientdata = new size_t(90);
}
Napi::FunctionReference *_Magick_PathLinetoHorizontalAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathLinetoHorizontalAbs_ctor_ref = Napi::Persistent(_Magick_PathLinetoHorizontalAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[90] = _Magick_PathLinetoHorizontalAbs_ctor_ref;
/* Class: PathLinetoHorizontalRel (_Magick_PathLinetoHorizontalRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathLinetoHorizontalRel_ctor = _Magick_PathLinetoHorizontalRel_inst::GetClass(env);
Magick.Set("PathLinetoHorizontalRel", _Magick_PathLinetoHorizontalRel_ctor);
if (SWIGTYPE_p_Magick__PathLinetoHorizontalRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathLinetoHorizontalRel->clientdata = new size_t(91);
}
Napi::FunctionReference *_Magick_PathLinetoHorizontalRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathLinetoHorizontalRel_ctor_ref = Napi::Persistent(_Magick_PathLinetoHorizontalRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[91] = _Magick_PathLinetoHorizontalRel_ctor_ref;
/* Class: PathLinetoVerticalAbs (_Magick_PathLinetoVerticalAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathLinetoVerticalAbs_ctor = _Magick_PathLinetoVerticalAbs_inst::GetClass(env);
Magick.Set("PathLinetoVerticalAbs", _Magick_PathLinetoVerticalAbs_ctor);
if (SWIGTYPE_p_Magick__PathLinetoVerticalAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathLinetoVerticalAbs->clientdata = new size_t(92);
}
Napi::FunctionReference *_Magick_PathLinetoVerticalAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathLinetoVerticalAbs_ctor_ref = Napi::Persistent(_Magick_PathLinetoVerticalAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[92] = _Magick_PathLinetoVerticalAbs_ctor_ref;
/* Class: PathLinetoVerticalRel (_Magick_PathLinetoVerticalRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathLinetoVerticalRel_ctor = _Magick_PathLinetoVerticalRel_inst::GetClass(env);
Magick.Set("PathLinetoVerticalRel", _Magick_PathLinetoVerticalRel_ctor);
if (SWIGTYPE_p_Magick__PathLinetoVerticalRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathLinetoVerticalRel->clientdata = new size_t(93);
}
Napi::FunctionReference *_Magick_PathLinetoVerticalRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathLinetoVerticalRel_ctor_ref = Napi::Persistent(_Magick_PathLinetoVerticalRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[93] = _Magick_PathLinetoVerticalRel_ctor_ref;
/* Class: PathMovetoAbs (_Magick_PathMovetoAbs) */
// jsnapi_registerclass
Napi::Function _Magick_PathMovetoAbs_ctor = _Magick_PathMovetoAbs_inst::GetClass(env);
Magick.Set("PathMovetoAbs", _Magick_PathMovetoAbs_ctor);
if (SWIGTYPE_p_Magick__PathMovetoAbs->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathMovetoAbs->clientdata = new size_t(94);
}
Napi::FunctionReference *_Magick_PathMovetoAbs_ctor_ref = new Napi::FunctionReference();
*_Magick_PathMovetoAbs_ctor_ref = Napi::Persistent(_Magick_PathMovetoAbs_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[94] = _Magick_PathMovetoAbs_ctor_ref;
/* Class: PathMovetoRel (_Magick_PathMovetoRel) */
// jsnapi_registerclass
Napi::Function _Magick_PathMovetoRel_ctor = _Magick_PathMovetoRel_inst::GetClass(env);
Magick.Set("PathMovetoRel", _Magick_PathMovetoRel_ctor);
if (SWIGTYPE_p_Magick__PathMovetoRel->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__PathMovetoRel->clientdata = new size_t(95);
}
Napi::FunctionReference *_Magick_PathMovetoRel_ctor_ref = new Napi::FunctionReference();
*_Magick_PathMovetoRel_ctor_ref = Napi::Persistent(_Magick_PathMovetoRel_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[95] = _Magick_PathMovetoRel_ctor_ref;
/* Class: ErrorPolicy (_Magick_ErrorPolicy) */
// jsnapi_registerclass
Napi::Function _Magick_ErrorPolicy_ctor = _Magick_ErrorPolicy_inst::GetClass(env);
Magick.Set("ErrorPolicy", _Magick_ErrorPolicy_ctor);
if (SWIGTYPE_p_Magick__ErrorPolicy->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ErrorPolicy->clientdata = new size_t(96);
}
Napi::FunctionReference *_Magick_ErrorPolicy_ctor_ref = new Napi::FunctionReference();
*_Magick_ErrorPolicy_ctor_ref = Napi::Persistent(_Magick_ErrorPolicy_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[96] = _Magick_ErrorPolicy_ctor_ref;
/* Class: ErrorType (_Magick_ErrorType) */
// jsnapi_registerclass
Napi::Function _Magick_ErrorType_ctor = _Magick_ErrorType_inst::GetClass(env);
Magick.Set("ErrorType", _Magick_ErrorType_ctor);
if (SWIGTYPE_p_Magick__ErrorType->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ErrorType->clientdata = new size_t(97);
}
Napi::FunctionReference *_Magick_ErrorType_ctor_ref = new Napi::FunctionReference();
*_Magick_ErrorType_ctor_ref = Napi::Persistent(_Magick_ErrorType_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[97] = _Magick_ErrorType_ctor_ref;
/* Class: WarningPolicy (_Magick_WarningPolicy) */
// jsnapi_registerclass
Napi::Function _Magick_WarningPolicy_ctor = _Magick_WarningPolicy_inst::GetClass(env);
Magick.Set("WarningPolicy", _Magick_WarningPolicy_ctor);
if (SWIGTYPE_p_Magick__WarningPolicy->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__WarningPolicy->clientdata = new size_t(98);
}
Napi::FunctionReference *_Magick_WarningPolicy_ctor_ref = new Napi::FunctionReference();
*_Magick_WarningPolicy_ctor_ref = Napi::Persistent(_Magick_WarningPolicy_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[98] = _Magick_WarningPolicy_ctor_ref;
/* Class: WarningType (_Magick_WarningType) */
// jsnapi_registerclass
Napi::Function _Magick_WarningType_ctor = _Magick_WarningType_inst::GetClass(env);
Magick.Set("WarningType", _Magick_WarningType_ctor);
if (SWIGTYPE_p_Magick__WarningType->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__WarningType->clientdata = new size_t(99);
}
Napi::FunctionReference *_Magick_WarningType_ctor_ref = new Napi::FunctionReference();
*_Magick_WarningType_ctor_ref = Napi::Persistent(_Magick_WarningType_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[99] = _Magick_WarningType_ctor_ref;
/* Class: ChannelMoments (_Magick_ChannelMoments) */
// jsnapi_registerclass
Napi::Function _Magick_ChannelMoments_ctor = _Magick_ChannelMoments_inst::GetClass(env);
Magick.Set("ChannelMoments", _Magick_ChannelMoments_ctor);
if (SWIGTYPE_p_Magick__ChannelMoments->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ChannelMoments->clientdata = new size_t(100);
}
Napi::FunctionReference *_Magick_ChannelMoments_ctor_ref = new Napi::FunctionReference();
*_Magick_ChannelMoments_ctor_ref = Napi::Persistent(_Magick_ChannelMoments_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[100] = _Magick_ChannelMoments_ctor_ref;
/* Class: ChannelPerceptualHash (_Magick_ChannelPerceptualHash) */
// jsnapi_registerclass
Napi::Function _Magick_ChannelPerceptualHash_ctor = _Magick_ChannelPerceptualHash_inst::GetClass(env);
Magick.Set("ChannelPerceptualHash", _Magick_ChannelPerceptualHash_ctor);
if (SWIGTYPE_p_Magick__ChannelPerceptualHash->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ChannelPerceptualHash->clientdata = new size_t(101);
}
Napi::FunctionReference *_Magick_ChannelPerceptualHash_ctor_ref = new Napi::FunctionReference();
*_Magick_ChannelPerceptualHash_ctor_ref = Napi::Persistent(_Magick_ChannelPerceptualHash_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[101] = _Magick_ChannelPerceptualHash_ctor_ref;
/* Class: ChannelStatistics (_Magick_ChannelStatistics) */
// jsnapi_registerclass
Napi::Function _Magick_ChannelStatistics_ctor = _Magick_ChannelStatistics_inst::GetClass(env);
Magick.Set("ChannelStatistics", _Magick_ChannelStatistics_ctor);
if (SWIGTYPE_p_Magick__ChannelStatistics->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ChannelStatistics->clientdata = new size_t(102);
}
Napi::FunctionReference *_Magick_ChannelStatistics_ctor_ref = new Napi::FunctionReference();
*_Magick_ChannelStatistics_ctor_ref = Napi::Persistent(_Magick_ChannelStatistics_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[102] = _Magick_ChannelStatistics_ctor_ref;
/* Class: ImageMoments (_Magick_ImageMoments) */
// jsnapi_registerclass
Napi::Function _Magick_ImageMoments_ctor = _Magick_ImageMoments_inst::GetClass(env);
Magick.Set("ImageMoments", _Magick_ImageMoments_ctor);
if (SWIGTYPE_p_Magick__ImageMoments->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ImageMoments->clientdata = new size_t(103);
}
Napi::FunctionReference *_Magick_ImageMoments_ctor_ref = new Napi::FunctionReference();
*_Magick_ImageMoments_ctor_ref = Napi::Persistent(_Magick_ImageMoments_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[103] = _Magick_ImageMoments_ctor_ref;
/* Class: ImagePerceptualHash (_Magick_ImagePerceptualHash) */
// jsnapi_registerclass
Napi::Function _Magick_ImagePerceptualHash_ctor = _Magick_ImagePerceptualHash_inst::GetClass(env);
Magick.Set("ImagePerceptualHash", _Magick_ImagePerceptualHash_ctor);
if (SWIGTYPE_p_Magick__ImagePerceptualHash->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ImagePerceptualHash->clientdata = new size_t(104);
}
Napi::FunctionReference *_Magick_ImagePerceptualHash_ctor_ref = new Napi::FunctionReference();
*_Magick_ImagePerceptualHash_ctor_ref = Napi::Persistent(_Magick_ImagePerceptualHash_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[104] = _Magick_ImagePerceptualHash_ctor_ref;
/* Class: ImageStatistics (_Magick_ImageStatistics) */
// jsnapi_registerclass
Napi::Function _Magick_ImageStatistics_ctor = _Magick_ImageStatistics_inst::GetClass(env);
Magick.Set("ImageStatistics", _Magick_ImageStatistics_ctor);
if (SWIGTYPE_p_Magick__ImageStatistics->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ImageStatistics->clientdata = new size_t(105);
}
Napi::FunctionReference *_Magick_ImageStatistics_ctor_ref = new Napi::FunctionReference();
*_Magick_ImageStatistics_ctor_ref = Napi::Persistent(_Magick_ImageStatistics_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[105] = _Magick_ImageStatistics_ctor_ref;
/* Class: TypeMetric (_Magick_TypeMetric) */
// jsnapi_registerclass
Napi::Function _Magick_TypeMetric_ctor = _Magick_TypeMetric_inst::GetClass(env);
Magick.Set("TypeMetric", _Magick_TypeMetric_ctor);
if (SWIGTYPE_p_Magick__TypeMetric->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__TypeMetric->clientdata = new size_t(106);
}
Napi::FunctionReference *_Magick_TypeMetric_ctor_ref = new Napi::FunctionReference();
*_Magick_TypeMetric_ctor_ref = Napi::Persistent(_Magick_TypeMetric_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[106] = _Magick_TypeMetric_ctor_ref;
/* Class: Image (_Magick_Image) */
// jsnapi_registerclass
Napi::Function _Magick_Image_ctor = _Magick_Image_inst::GetClass(env);
Magick.Set("Image", _Magick_Image_ctor);
if (SWIGTYPE_p_Magick__Image->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Image->clientdata = new size_t(107);
}
Napi::FunctionReference *_Magick_Image_ctor_ref = new Napi::FunctionReference();
*_Magick_Image_ctor_ref = Napi::Persistent(_Magick_Image_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[107] = _Magick_Image_ctor_ref;
/* Class: ResourceLimits (_Magick_ResourceLimits) */
// jsnapi_registerclass
Napi::Function _Magick_ResourceLimits_ctor = _Magick_ResourceLimits_inst::GetClass(env);
Magick.Set("ResourceLimits", _Magick_ResourceLimits_ctor);
if (SWIGTYPE_p_Magick__ResourceLimits->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ResourceLimits->clientdata = new size_t(108);
}
Napi::FunctionReference *_Magick_ResourceLimits_ctor_ref = new Napi::FunctionReference();
*_Magick_ResourceLimits_ctor_ref = Napi::Persistent(_Magick_ResourceLimits_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[108] = _Magick_ResourceLimits_ctor_ref;
/* Class: CoderInfo (_Magick_CoderInfo) */
// jsnapi_registerclass
Napi::Function _Magick_CoderInfo_ctor = _Magick_CoderInfo_inst::GetClass(env);
Magick.Set("CoderInfo", _Magick_CoderInfo_ctor);
if (SWIGTYPE_p_Magick__CoderInfo->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__CoderInfo->clientdata = new size_t(109);
}
Napi::FunctionReference *_Magick_CoderInfo_ctor_ref = new Napi::FunctionReference();
*_Magick_CoderInfo_ctor_ref = Napi::Persistent(_Magick_CoderInfo_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[109] = _Magick_CoderInfo_ctor_ref;
/* Class: Montage (_Magick_Montage) */
// jsnapi_registerclass
Napi::Function _Magick_Montage_ctor = _Magick_Montage_inst::GetClass(env);
Magick.Set("Montage", _Magick_Montage_ctor);
if (SWIGTYPE_p_Magick__Montage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__Montage->clientdata = new size_t(110);
}
Napi::FunctionReference *_Magick_Montage_ctor_ref = new Napi::FunctionReference();
*_Magick_Montage_ctor_ref = Napi::Persistent(_Magick_Montage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[110] = _Magick_Montage_ctor_ref;
/* Class: MontageFramed (_Magick_MontageFramed) */
// jsnapi_registerclass
Napi::Function _Magick_MontageFramed_ctor = _Magick_MontageFramed_inst::GetClass(env);
Magick.Set("MontageFramed", _Magick_MontageFramed_ctor);
if (SWIGTYPE_p_Magick__MontageFramed->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__MontageFramed->clientdata = new size_t(111);
}
Napi::FunctionReference *_Magick_MontageFramed_ctor_ref = new Napi::FunctionReference();
*_Magick_MontageFramed_ctor_ref = Napi::Persistent(_Magick_MontageFramed_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[111] = _Magick_MontageFramed_ctor_ref;
/* Class: adaptiveBlurImage (_Magick_adaptiveBlurImage) */
// jsnapi_registerclass
Napi::Function _Magick_adaptiveBlurImage_ctor = _Magick_adaptiveBlurImage_inst::GetClass(env);
Magick.Set("adaptiveBlurImage", _Magick_adaptiveBlurImage_ctor);
if (SWIGTYPE_p_Magick__adaptiveBlurImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__adaptiveBlurImage->clientdata = new size_t(112);
}
Napi::FunctionReference *_Magick_adaptiveBlurImage_ctor_ref = new Napi::FunctionReference();
*_Magick_adaptiveBlurImage_ctor_ref = Napi::Persistent(_Magick_adaptiveBlurImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[112] = _Magick_adaptiveBlurImage_ctor_ref;
/* Class: adaptiveThresholdImage (_Magick_adaptiveThresholdImage) */
// jsnapi_registerclass
Napi::Function _Magick_adaptiveThresholdImage_ctor = _Magick_adaptiveThresholdImage_inst::GetClass(env);
Magick.Set("adaptiveThresholdImage", _Magick_adaptiveThresholdImage_ctor);
if (SWIGTYPE_p_Magick__adaptiveThresholdImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__adaptiveThresholdImage->clientdata = new size_t(113);
}
Napi::FunctionReference *_Magick_adaptiveThresholdImage_ctor_ref = new Napi::FunctionReference();
*_Magick_adaptiveThresholdImage_ctor_ref = Napi::Persistent(_Magick_adaptiveThresholdImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[113] = _Magick_adaptiveThresholdImage_ctor_ref;
/* Class: addNoiseImage (_Magick_addNoiseImage) */
// jsnapi_registerclass
Napi::Function _Magick_addNoiseImage_ctor = _Magick_addNoiseImage_inst::GetClass(env);
Magick.Set("addNoiseImage", _Magick_addNoiseImage_ctor);
if (SWIGTYPE_p_Magick__addNoiseImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__addNoiseImage->clientdata = new size_t(114);
}
Napi::FunctionReference *_Magick_addNoiseImage_ctor_ref = new Napi::FunctionReference();
*_Magick_addNoiseImage_ctor_ref = Napi::Persistent(_Magick_addNoiseImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[114] = _Magick_addNoiseImage_ctor_ref;
/* Class: affineTransformImage (_Magick_affineTransformImage) */
// jsnapi_registerclass
Napi::Function _Magick_affineTransformImage_ctor = _Magick_affineTransformImage_inst::GetClass(env);
Magick.Set("affineTransformImage", _Magick_affineTransformImage_ctor);
if (SWIGTYPE_p_Magick__affineTransformImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__affineTransformImage->clientdata = new size_t(115);
}
Napi::FunctionReference *_Magick_affineTransformImage_ctor_ref = new Napi::FunctionReference();
*_Magick_affineTransformImage_ctor_ref = Napi::Persistent(_Magick_affineTransformImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[115] = _Magick_affineTransformImage_ctor_ref;
/* Class: annotateImage (_Magick_annotateImage) */
// jsnapi_registerclass
Napi::Function _Magick_annotateImage_ctor = _Magick_annotateImage_inst::GetClass(env);
Magick.Set("annotateImage", _Magick_annotateImage_ctor);
if (SWIGTYPE_p_Magick__annotateImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__annotateImage->clientdata = new size_t(116);
}
Napi::FunctionReference *_Magick_annotateImage_ctor_ref = new Napi::FunctionReference();
*_Magick_annotateImage_ctor_ref = Napi::Persistent(_Magick_annotateImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[116] = _Magick_annotateImage_ctor_ref;
/* Class: blurImage (_Magick_blurImage) */
// jsnapi_registerclass
Napi::Function _Magick_blurImage_ctor = _Magick_blurImage_inst::GetClass(env);
Magick.Set("blurImage", _Magick_blurImage_ctor);
if (SWIGTYPE_p_Magick__blurImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__blurImage->clientdata = new size_t(117);
}
Napi::FunctionReference *_Magick_blurImage_ctor_ref = new Napi::FunctionReference();
*_Magick_blurImage_ctor_ref = Napi::Persistent(_Magick_blurImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[117] = _Magick_blurImage_ctor_ref;
/* Class: borderImage (_Magick_borderImage) */
// jsnapi_registerclass
Napi::Function _Magick_borderImage_ctor = _Magick_borderImage_inst::GetClass(env);
Magick.Set("borderImage", _Magick_borderImage_ctor);
if (SWIGTYPE_p_Magick__borderImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__borderImage->clientdata = new size_t(118);
}
Napi::FunctionReference *_Magick_borderImage_ctor_ref = new Napi::FunctionReference();
*_Magick_borderImage_ctor_ref = Napi::Persistent(_Magick_borderImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[118] = _Magick_borderImage_ctor_ref;
/* Class: channelImage (_Magick_channelImage) */
// jsnapi_registerclass
Napi::Function _Magick_channelImage_ctor = _Magick_channelImage_inst::GetClass(env);
Magick.Set("channelImage", _Magick_channelImage_ctor);
if (SWIGTYPE_p_Magick__channelImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__channelImage->clientdata = new size_t(119);
}
Napi::FunctionReference *_Magick_channelImage_ctor_ref = new Napi::FunctionReference();
*_Magick_channelImage_ctor_ref = Napi::Persistent(_Magick_channelImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[119] = _Magick_channelImage_ctor_ref;
/* Class: charcoalImage (_Magick_charcoalImage) */
// jsnapi_registerclass
Napi::Function _Magick_charcoalImage_ctor = _Magick_charcoalImage_inst::GetClass(env);
Magick.Set("charcoalImage", _Magick_charcoalImage_ctor);
if (SWIGTYPE_p_Magick__charcoalImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__charcoalImage->clientdata = new size_t(120);
}
Napi::FunctionReference *_Magick_charcoalImage_ctor_ref = new Napi::FunctionReference();
*_Magick_charcoalImage_ctor_ref = Napi::Persistent(_Magick_charcoalImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[120] = _Magick_charcoalImage_ctor_ref;
/* Class: chopImage (_Magick_chopImage) */
// jsnapi_registerclass
Napi::Function _Magick_chopImage_ctor = _Magick_chopImage_inst::GetClass(env);
Magick.Set("chopImage", _Magick_chopImage_ctor);
if (SWIGTYPE_p_Magick__chopImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__chopImage->clientdata = new size_t(121);
}
Napi::FunctionReference *_Magick_chopImage_ctor_ref = new Napi::FunctionReference();
*_Magick_chopImage_ctor_ref = Napi::Persistent(_Magick_chopImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[121] = _Magick_chopImage_ctor_ref;
/* Class: cdlImage (_Magick_cdlImage) */
// jsnapi_registerclass
Napi::Function _Magick_cdlImage_ctor = _Magick_cdlImage_inst::GetClass(env);
Magick.Set("cdlImage", _Magick_cdlImage_ctor);
if (SWIGTYPE_p_Magick__cdlImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__cdlImage->clientdata = new size_t(122);
}
Napi::FunctionReference *_Magick_cdlImage_ctor_ref = new Napi::FunctionReference();
*_Magick_cdlImage_ctor_ref = Napi::Persistent(_Magick_cdlImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[122] = _Magick_cdlImage_ctor_ref;
/* Class: colorizeImage (_Magick_colorizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_colorizeImage_ctor = _Magick_colorizeImage_inst::GetClass(env);
Magick.Set("colorizeImage", _Magick_colorizeImage_ctor);
if (SWIGTYPE_p_Magick__colorizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__colorizeImage->clientdata = new size_t(123);
}
Napi::FunctionReference *_Magick_colorizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_colorizeImage_ctor_ref = Napi::Persistent(_Magick_colorizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[123] = _Magick_colorizeImage_ctor_ref;
/* Class: colorMatrixImage (_Magick_colorMatrixImage) */
// jsnapi_registerclass
Napi::Function _Magick_colorMatrixImage_ctor = _Magick_colorMatrixImage_inst::GetClass(env);
Magick.Set("colorMatrixImage", _Magick_colorMatrixImage_ctor);
if (SWIGTYPE_p_Magick__colorMatrixImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__colorMatrixImage->clientdata = new size_t(124);
}
Napi::FunctionReference *_Magick_colorMatrixImage_ctor_ref = new Napi::FunctionReference();
*_Magick_colorMatrixImage_ctor_ref = Napi::Persistent(_Magick_colorMatrixImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[124] = _Magick_colorMatrixImage_ctor_ref;
/* Class: colorSpaceImage (_Magick_colorSpaceImage) */
// jsnapi_registerclass
Napi::Function _Magick_colorSpaceImage_ctor = _Magick_colorSpaceImage_inst::GetClass(env);
Magick.Set("colorSpaceImage", _Magick_colorSpaceImage_ctor);
if (SWIGTYPE_p_Magick__colorSpaceImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__colorSpaceImage->clientdata = new size_t(125);
}
Napi::FunctionReference *_Magick_colorSpaceImage_ctor_ref = new Napi::FunctionReference();
*_Magick_colorSpaceImage_ctor_ref = Napi::Persistent(_Magick_colorSpaceImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[125] = _Magick_colorSpaceImage_ctor_ref;
/* Class: commentImage (_Magick_commentImage) */
// jsnapi_registerclass
Napi::Function _Magick_commentImage_ctor = _Magick_commentImage_inst::GetClass(env);
Magick.Set("commentImage", _Magick_commentImage_ctor);
if (SWIGTYPE_p_Magick__commentImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__commentImage->clientdata = new size_t(126);
}
Napi::FunctionReference *_Magick_commentImage_ctor_ref = new Napi::FunctionReference();
*_Magick_commentImage_ctor_ref = Napi::Persistent(_Magick_commentImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[126] = _Magick_commentImage_ctor_ref;
/* Class: compositeImage (_Magick_compositeImage) */
// jsnapi_registerclass
Napi::Function _Magick_compositeImage_ctor = _Magick_compositeImage_inst::GetClass(env);
Magick.Set("compositeImage", _Magick_compositeImage_ctor);
if (SWIGTYPE_p_Magick__compositeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__compositeImage->clientdata = new size_t(127);
}
Napi::FunctionReference *_Magick_compositeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_compositeImage_ctor_ref = Napi::Persistent(_Magick_compositeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[127] = _Magick_compositeImage_ctor_ref;
/* Class: contrastImage (_Magick_contrastImage) */
// jsnapi_registerclass
Napi::Function _Magick_contrastImage_ctor = _Magick_contrastImage_inst::GetClass(env);
Magick.Set("contrastImage", _Magick_contrastImage_ctor);
if (SWIGTYPE_p_Magick__contrastImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__contrastImage->clientdata = new size_t(128);
}
Napi::FunctionReference *_Magick_contrastImage_ctor_ref = new Napi::FunctionReference();
*_Magick_contrastImage_ctor_ref = Napi::Persistent(_Magick_contrastImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[128] = _Magick_contrastImage_ctor_ref;
/* Class: cropImage (_Magick_cropImage) */
// jsnapi_registerclass
Napi::Function _Magick_cropImage_ctor = _Magick_cropImage_inst::GetClass(env);
Magick.Set("cropImage", _Magick_cropImage_ctor);
if (SWIGTYPE_p_Magick__cropImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__cropImage->clientdata = new size_t(129);
}
Napi::FunctionReference *_Magick_cropImage_ctor_ref = new Napi::FunctionReference();
*_Magick_cropImage_ctor_ref = Napi::Persistent(_Magick_cropImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[129] = _Magick_cropImage_ctor_ref;
/* Class: cycleColormapImage (_Magick_cycleColormapImage) */
// jsnapi_registerclass
Napi::Function _Magick_cycleColormapImage_ctor = _Magick_cycleColormapImage_inst::GetClass(env);
Magick.Set("cycleColormapImage", _Magick_cycleColormapImage_ctor);
if (SWIGTYPE_p_Magick__cycleColormapImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__cycleColormapImage->clientdata = new size_t(130);
}
Napi::FunctionReference *_Magick_cycleColormapImage_ctor_ref = new Napi::FunctionReference();
*_Magick_cycleColormapImage_ctor_ref = Napi::Persistent(_Magick_cycleColormapImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[130] = _Magick_cycleColormapImage_ctor_ref;
/* Class: despeckleImage (_Magick_despeckleImage) */
// jsnapi_registerclass
Napi::Function _Magick_despeckleImage_ctor = _Magick_despeckleImage_inst::GetClass(env);
Magick.Set("despeckleImage", _Magick_despeckleImage_ctor);
if (SWIGTYPE_p_Magick__despeckleImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__despeckleImage->clientdata = new size_t(131);
}
Napi::FunctionReference *_Magick_despeckleImage_ctor_ref = new Napi::FunctionReference();
*_Magick_despeckleImage_ctor_ref = Napi::Persistent(_Magick_despeckleImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[131] = _Magick_despeckleImage_ctor_ref;
/* Class: distortImage (_Magick_distortImage) */
// jsnapi_registerclass
Napi::Function _Magick_distortImage_ctor = _Magick_distortImage_inst::GetClass(env);
Magick.Set("distortImage", _Magick_distortImage_ctor);
if (SWIGTYPE_p_Magick__distortImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__distortImage->clientdata = new size_t(132);
}
Napi::FunctionReference *_Magick_distortImage_ctor_ref = new Napi::FunctionReference();
*_Magick_distortImage_ctor_ref = Napi::Persistent(_Magick_distortImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[132] = _Magick_distortImage_ctor_ref;
/* Class: drawImage (_Magick_drawImage) */
// jsnapi_registerclass
Napi::Function _Magick_drawImage_ctor = _Magick_drawImage_inst::GetClass(env);
Magick.Set("drawImage", _Magick_drawImage_ctor);
if (SWIGTYPE_p_Magick__drawImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__drawImage->clientdata = new size_t(133);
}
Napi::FunctionReference *_Magick_drawImage_ctor_ref = new Napi::FunctionReference();
*_Magick_drawImage_ctor_ref = Napi::Persistent(_Magick_drawImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[133] = _Magick_drawImage_ctor_ref;
/* Class: edgeImage (_Magick_edgeImage) */
// jsnapi_registerclass
Napi::Function _Magick_edgeImage_ctor = _Magick_edgeImage_inst::GetClass(env);
Magick.Set("edgeImage", _Magick_edgeImage_ctor);
if (SWIGTYPE_p_Magick__edgeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__edgeImage->clientdata = new size_t(134);
}
Napi::FunctionReference *_Magick_edgeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_edgeImage_ctor_ref = Napi::Persistent(_Magick_edgeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[134] = _Magick_edgeImage_ctor_ref;
/* Class: embossImage (_Magick_embossImage) */
// jsnapi_registerclass
Napi::Function _Magick_embossImage_ctor = _Magick_embossImage_inst::GetClass(env);
Magick.Set("embossImage", _Magick_embossImage_ctor);
if (SWIGTYPE_p_Magick__embossImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__embossImage->clientdata = new size_t(135);
}
Napi::FunctionReference *_Magick_embossImage_ctor_ref = new Napi::FunctionReference();
*_Magick_embossImage_ctor_ref = Napi::Persistent(_Magick_embossImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[135] = _Magick_embossImage_ctor_ref;
/* Class: enhanceImage (_Magick_enhanceImage) */
// jsnapi_registerclass
Napi::Function _Magick_enhanceImage_ctor = _Magick_enhanceImage_inst::GetClass(env);
Magick.Set("enhanceImage", _Magick_enhanceImage_ctor);
if (SWIGTYPE_p_Magick__enhanceImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__enhanceImage->clientdata = new size_t(136);
}
Napi::FunctionReference *_Magick_enhanceImage_ctor_ref = new Napi::FunctionReference();
*_Magick_enhanceImage_ctor_ref = Napi::Persistent(_Magick_enhanceImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[136] = _Magick_enhanceImage_ctor_ref;
/* Class: equalizeImage (_Magick_equalizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_equalizeImage_ctor = _Magick_equalizeImage_inst::GetClass(env);
Magick.Set("equalizeImage", _Magick_equalizeImage_ctor);
if (SWIGTYPE_p_Magick__equalizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__equalizeImage->clientdata = new size_t(137);
}
Napi::FunctionReference *_Magick_equalizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_equalizeImage_ctor_ref = Napi::Persistent(_Magick_equalizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[137] = _Magick_equalizeImage_ctor_ref;
/* Class: fillColorImage (_Magick_fillColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_fillColorImage_ctor = _Magick_fillColorImage_inst::GetClass(env);
Magick.Set("fillColorImage", _Magick_fillColorImage_ctor);
if (SWIGTYPE_p_Magick__fillColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__fillColorImage->clientdata = new size_t(138);
}
Napi::FunctionReference *_Magick_fillColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_fillColorImage_ctor_ref = Napi::Persistent(_Magick_fillColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[138] = _Magick_fillColorImage_ctor_ref;
/* Class: flipImage (_Magick_flipImage) */
// jsnapi_registerclass
Napi::Function _Magick_flipImage_ctor = _Magick_flipImage_inst::GetClass(env);
Magick.Set("flipImage", _Magick_flipImage_ctor);
if (SWIGTYPE_p_Magick__flipImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__flipImage->clientdata = new size_t(139);
}
Napi::FunctionReference *_Magick_flipImage_ctor_ref = new Napi::FunctionReference();
*_Magick_flipImage_ctor_ref = Napi::Persistent(_Magick_flipImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[139] = _Magick_flipImage_ctor_ref;
/* Class: floodFillAlphaImage (_Magick_floodFillAlphaImage) */
// jsnapi_registerclass
Napi::Function _Magick_floodFillAlphaImage_ctor = _Magick_floodFillAlphaImage_inst::GetClass(env);
Magick.Set("floodFillAlphaImage", _Magick_floodFillAlphaImage_ctor);
if (SWIGTYPE_p_Magick__floodFillAlphaImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__floodFillAlphaImage->clientdata = new size_t(140);
}
Napi::FunctionReference *_Magick_floodFillAlphaImage_ctor_ref = new Napi::FunctionReference();
*_Magick_floodFillAlphaImage_ctor_ref = Napi::Persistent(_Magick_floodFillAlphaImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[140] = _Magick_floodFillAlphaImage_ctor_ref;
/* Class: floodFillColorImage (_Magick_floodFillColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_floodFillColorImage_ctor = _Magick_floodFillColorImage_inst::GetClass(env);
Magick.Set("floodFillColorImage", _Magick_floodFillColorImage_ctor);
if (SWIGTYPE_p_Magick__floodFillColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__floodFillColorImage->clientdata = new size_t(141);
}
Napi::FunctionReference *_Magick_floodFillColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_floodFillColorImage_ctor_ref = Napi::Persistent(_Magick_floodFillColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[141] = _Magick_floodFillColorImage_ctor_ref;
/* Class: floodFillTextureImage (_Magick_floodFillTextureImage) */
// jsnapi_registerclass
Napi::Function _Magick_floodFillTextureImage_ctor = _Magick_floodFillTextureImage_inst::GetClass(env);
Magick.Set("floodFillTextureImage", _Magick_floodFillTextureImage_ctor);
if (SWIGTYPE_p_Magick__floodFillTextureImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__floodFillTextureImage->clientdata = new size_t(142);
}
Napi::FunctionReference *_Magick_floodFillTextureImage_ctor_ref = new Napi::FunctionReference();
*_Magick_floodFillTextureImage_ctor_ref = Napi::Persistent(_Magick_floodFillTextureImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[142] = _Magick_floodFillTextureImage_ctor_ref;
/* Class: flopImage (_Magick_flopImage) */
// jsnapi_registerclass
Napi::Function _Magick_flopImage_ctor = _Magick_flopImage_inst::GetClass(env);
Magick.Set("flopImage", _Magick_flopImage_ctor);
if (SWIGTYPE_p_Magick__flopImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__flopImage->clientdata = new size_t(143);
}
Napi::FunctionReference *_Magick_flopImage_ctor_ref = new Napi::FunctionReference();
*_Magick_flopImage_ctor_ref = Napi::Persistent(_Magick_flopImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[143] = _Magick_flopImage_ctor_ref;
/* Class: frameImage (_Magick_frameImage) */
// jsnapi_registerclass
Napi::Function _Magick_frameImage_ctor = _Magick_frameImage_inst::GetClass(env);
Magick.Set("frameImage", _Magick_frameImage_ctor);
if (SWIGTYPE_p_Magick__frameImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__frameImage->clientdata = new size_t(144);
}
Napi::FunctionReference *_Magick_frameImage_ctor_ref = new Napi::FunctionReference();
*_Magick_frameImage_ctor_ref = Napi::Persistent(_Magick_frameImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[144] = _Magick_frameImage_ctor_ref;
/* Class: gammaImage (_Magick_gammaImage) */
// jsnapi_registerclass
Napi::Function _Magick_gammaImage_ctor = _Magick_gammaImage_inst::GetClass(env);
Magick.Set("gammaImage", _Magick_gammaImage_ctor);
if (SWIGTYPE_p_Magick__gammaImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__gammaImage->clientdata = new size_t(145);
}
Napi::FunctionReference *_Magick_gammaImage_ctor_ref = new Napi::FunctionReference();
*_Magick_gammaImage_ctor_ref = Napi::Persistent(_Magick_gammaImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[145] = _Magick_gammaImage_ctor_ref;
/* Class: gaussianBlurImage (_Magick_gaussianBlurImage) */
// jsnapi_registerclass
Napi::Function _Magick_gaussianBlurImage_ctor = _Magick_gaussianBlurImage_inst::GetClass(env);
Magick.Set("gaussianBlurImage", _Magick_gaussianBlurImage_ctor);
if (SWIGTYPE_p_Magick__gaussianBlurImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__gaussianBlurImage->clientdata = new size_t(146);
}
Napi::FunctionReference *_Magick_gaussianBlurImage_ctor_ref = new Napi::FunctionReference();
*_Magick_gaussianBlurImage_ctor_ref = Napi::Persistent(_Magick_gaussianBlurImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[146] = _Magick_gaussianBlurImage_ctor_ref;
/* Class: haldClutImage (_Magick_haldClutImage) */
// jsnapi_registerclass
Napi::Function _Magick_haldClutImage_ctor = _Magick_haldClutImage_inst::GetClass(env);
Magick.Set("haldClutImage", _Magick_haldClutImage_ctor);
if (SWIGTYPE_p_Magick__haldClutImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__haldClutImage->clientdata = new size_t(147);
}
Napi::FunctionReference *_Magick_haldClutImage_ctor_ref = new Napi::FunctionReference();
*_Magick_haldClutImage_ctor_ref = Napi::Persistent(_Magick_haldClutImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[147] = _Magick_haldClutImage_ctor_ref;
/* Class: implodeImage (_Magick_implodeImage) */
// jsnapi_registerclass
Napi::Function _Magick_implodeImage_ctor = _Magick_implodeImage_inst::GetClass(env);
Magick.Set("implodeImage", _Magick_implodeImage_ctor);
if (SWIGTYPE_p_Magick__implodeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__implodeImage->clientdata = new size_t(148);
}
Napi::FunctionReference *_Magick_implodeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_implodeImage_ctor_ref = Napi::Persistent(_Magick_implodeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[148] = _Magick_implodeImage_ctor_ref;
/* Class: inverseFourierTransformImage (_Magick_inverseFourierTransformImage) */
// jsnapi_registerclass
Napi::Function _Magick_inverseFourierTransformImage_ctor = _Magick_inverseFourierTransformImage_inst::GetClass(env);
Magick.Set("inverseFourierTransformImage", _Magick_inverseFourierTransformImage_ctor);
if (SWIGTYPE_p_Magick__inverseFourierTransformImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__inverseFourierTransformImage->clientdata = new size_t(149);
}
Napi::FunctionReference *_Magick_inverseFourierTransformImage_ctor_ref = new Napi::FunctionReference();
*_Magick_inverseFourierTransformImage_ctor_ref = Napi::Persistent(_Magick_inverseFourierTransformImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[149] = _Magick_inverseFourierTransformImage_ctor_ref;
/* Class: isValidImage (_Magick_isValidImage) */
// jsnapi_registerclass
Napi::Function _Magick_isValidImage_ctor = _Magick_isValidImage_inst::GetClass(env);
Magick.Set("isValidImage", _Magick_isValidImage_ctor);
if (SWIGTYPE_p_Magick__isValidImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__isValidImage->clientdata = new size_t(150);
}
Napi::FunctionReference *_Magick_isValidImage_ctor_ref = new Napi::FunctionReference();
*_Magick_isValidImage_ctor_ref = Napi::Persistent(_Magick_isValidImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[150] = _Magick_isValidImage_ctor_ref;
/* Class: labelImage (_Magick_labelImage) */
// jsnapi_registerclass
Napi::Function _Magick_labelImage_ctor = _Magick_labelImage_inst::GetClass(env);
Magick.Set("labelImage", _Magick_labelImage_ctor);
if (SWIGTYPE_p_Magick__labelImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__labelImage->clientdata = new size_t(151);
}
Napi::FunctionReference *_Magick_labelImage_ctor_ref = new Napi::FunctionReference();
*_Magick_labelImage_ctor_ref = Napi::Persistent(_Magick_labelImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[151] = _Magick_labelImage_ctor_ref;
/* Class: levelImage (_Magick_levelImage) */
// jsnapi_registerclass
Napi::Function _Magick_levelImage_ctor = _Magick_levelImage_inst::GetClass(env);
Magick.Set("levelImage", _Magick_levelImage_ctor);
if (SWIGTYPE_p_Magick__levelImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__levelImage->clientdata = new size_t(152);
}
Napi::FunctionReference *_Magick_levelImage_ctor_ref = new Napi::FunctionReference();
*_Magick_levelImage_ctor_ref = Napi::Persistent(_Magick_levelImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[152] = _Magick_levelImage_ctor_ref;
/* Class: magnifyImage (_Magick_magnifyImage) */
// jsnapi_registerclass
Napi::Function _Magick_magnifyImage_ctor = _Magick_magnifyImage_inst::GetClass(env);
Magick.Set("magnifyImage", _Magick_magnifyImage_ctor);
if (SWIGTYPE_p_Magick__magnifyImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__magnifyImage->clientdata = new size_t(153);
}
Napi::FunctionReference *_Magick_magnifyImage_ctor_ref = new Napi::FunctionReference();
*_Magick_magnifyImage_ctor_ref = Napi::Persistent(_Magick_magnifyImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[153] = _Magick_magnifyImage_ctor_ref;
/* Class: mapImage (_Magick_mapImage) */
// jsnapi_registerclass
Napi::Function _Magick_mapImage_ctor = _Magick_mapImage_inst::GetClass(env);
Magick.Set("mapImage", _Magick_mapImage_ctor);
if (SWIGTYPE_p_Magick__mapImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__mapImage->clientdata = new size_t(154);
}
Napi::FunctionReference *_Magick_mapImage_ctor_ref = new Napi::FunctionReference();
*_Magick_mapImage_ctor_ref = Napi::Persistent(_Magick_mapImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[154] = _Magick_mapImage_ctor_ref;
/* Class: medianConvolveImage (_Magick_medianConvolveImage) */
// jsnapi_registerclass
Napi::Function _Magick_medianConvolveImage_ctor = _Magick_medianConvolveImage_inst::GetClass(env);
Magick.Set("medianConvolveImage", _Magick_medianConvolveImage_ctor);
if (SWIGTYPE_p_Magick__medianConvolveImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__medianConvolveImage->clientdata = new size_t(155);
}
Napi::FunctionReference *_Magick_medianConvolveImage_ctor_ref = new Napi::FunctionReference();
*_Magick_medianConvolveImage_ctor_ref = Napi::Persistent(_Magick_medianConvolveImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[155] = _Magick_medianConvolveImage_ctor_ref;
/* Class: minifyImage (_Magick_minifyImage) */
// jsnapi_registerclass
Napi::Function _Magick_minifyImage_ctor = _Magick_minifyImage_inst::GetClass(env);
Magick.Set("minifyImage", _Magick_minifyImage_ctor);
if (SWIGTYPE_p_Magick__minifyImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__minifyImage->clientdata = new size_t(156);
}
Napi::FunctionReference *_Magick_minifyImage_ctor_ref = new Napi::FunctionReference();
*_Magick_minifyImage_ctor_ref = Napi::Persistent(_Magick_minifyImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[156] = _Magick_minifyImage_ctor_ref;
/* Class: modulateImage (_Magick_modulateImage) */
// jsnapi_registerclass
Napi::Function _Magick_modulateImage_ctor = _Magick_modulateImage_inst::GetClass(env);
Magick.Set("modulateImage", _Magick_modulateImage_ctor);
if (SWIGTYPE_p_Magick__modulateImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__modulateImage->clientdata = new size_t(157);
}
Napi::FunctionReference *_Magick_modulateImage_ctor_ref = new Napi::FunctionReference();
*_Magick_modulateImage_ctor_ref = Napi::Persistent(_Magick_modulateImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[157] = _Magick_modulateImage_ctor_ref;
/* Class: negateImage (_Magick_negateImage) */
// jsnapi_registerclass
Napi::Function _Magick_negateImage_ctor = _Magick_negateImage_inst::GetClass(env);
Magick.Set("negateImage", _Magick_negateImage_ctor);
if (SWIGTYPE_p_Magick__negateImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__negateImage->clientdata = new size_t(158);
}
Napi::FunctionReference *_Magick_negateImage_ctor_ref = new Napi::FunctionReference();
*_Magick_negateImage_ctor_ref = Napi::Persistent(_Magick_negateImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[158] = _Magick_negateImage_ctor_ref;
/* Class: normalizeImage (_Magick_normalizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_normalizeImage_ctor = _Magick_normalizeImage_inst::GetClass(env);
Magick.Set("normalizeImage", _Magick_normalizeImage_ctor);
if (SWIGTYPE_p_Magick__normalizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__normalizeImage->clientdata = new size_t(159);
}
Napi::FunctionReference *_Magick_normalizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_normalizeImage_ctor_ref = Napi::Persistent(_Magick_normalizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[159] = _Magick_normalizeImage_ctor_ref;
/* Class: oilPaintImage (_Magick_oilPaintImage) */
// jsnapi_registerclass
Napi::Function _Magick_oilPaintImage_ctor = _Magick_oilPaintImage_inst::GetClass(env);
Magick.Set("oilPaintImage", _Magick_oilPaintImage_ctor);
if (SWIGTYPE_p_Magick__oilPaintImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__oilPaintImage->clientdata = new size_t(160);
}
Napi::FunctionReference *_Magick_oilPaintImage_ctor_ref = new Napi::FunctionReference();
*_Magick_oilPaintImage_ctor_ref = Napi::Persistent(_Magick_oilPaintImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[160] = _Magick_oilPaintImage_ctor_ref;
/* Class: alphaImage (_Magick_alphaImage) */
// jsnapi_registerclass
Napi::Function _Magick_alphaImage_ctor = _Magick_alphaImage_inst::GetClass(env);
Magick.Set("alphaImage", _Magick_alphaImage_ctor);
if (SWIGTYPE_p_Magick__alphaImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__alphaImage->clientdata = new size_t(161);
}
Napi::FunctionReference *_Magick_alphaImage_ctor_ref = new Napi::FunctionReference();
*_Magick_alphaImage_ctor_ref = Napi::Persistent(_Magick_alphaImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[161] = _Magick_alphaImage_ctor_ref;
/* Class: opaqueImage (_Magick_opaqueImage) */
// jsnapi_registerclass
Napi::Function _Magick_opaqueImage_ctor = _Magick_opaqueImage_inst::GetClass(env);
Magick.Set("opaqueImage", _Magick_opaqueImage_ctor);
if (SWIGTYPE_p_Magick__opaqueImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__opaqueImage->clientdata = new size_t(162);
}
Napi::FunctionReference *_Magick_opaqueImage_ctor_ref = new Napi::FunctionReference();
*_Magick_opaqueImage_ctor_ref = Napi::Persistent(_Magick_opaqueImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[162] = _Magick_opaqueImage_ctor_ref;
/* Class: quantizeImage (_Magick_quantizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_quantizeImage_ctor = _Magick_quantizeImage_inst::GetClass(env);
Magick.Set("quantizeImage", _Magick_quantizeImage_ctor);
if (SWIGTYPE_p_Magick__quantizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__quantizeImage->clientdata = new size_t(163);
}
Napi::FunctionReference *_Magick_quantizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_quantizeImage_ctor_ref = Napi::Persistent(_Magick_quantizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[163] = _Magick_quantizeImage_ctor_ref;
/* Class: raiseImage (_Magick_raiseImage) */
// jsnapi_registerclass
Napi::Function _Magick_raiseImage_ctor = _Magick_raiseImage_inst::GetClass(env);
Magick.Set("raiseImage", _Magick_raiseImage_ctor);
if (SWIGTYPE_p_Magick__raiseImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__raiseImage->clientdata = new size_t(164);
}
Napi::FunctionReference *_Magick_raiseImage_ctor_ref = new Napi::FunctionReference();
*_Magick_raiseImage_ctor_ref = Napi::Persistent(_Magick_raiseImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[164] = _Magick_raiseImage_ctor_ref;
/* Class: ReadOptions (_Magick_ReadOptions) */
// jsnapi_registerclass
Napi::Function _Magick_ReadOptions_ctor = _Magick_ReadOptions_inst::GetClass(env);
Magick.Set("ReadOptions", _Magick_ReadOptions_ctor);
if (SWIGTYPE_p_Magick__ReadOptions->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__ReadOptions->clientdata = new size_t(165);
}
Napi::FunctionReference *_Magick_ReadOptions_ctor_ref = new Napi::FunctionReference();
*_Magick_ReadOptions_ctor_ref = Napi::Persistent(_Magick_ReadOptions_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[165] = _Magick_ReadOptions_ctor_ref;
/* Class: reduceNoiseImage (_Magick_reduceNoiseImage) */
// jsnapi_registerclass
Napi::Function _Magick_reduceNoiseImage_ctor = _Magick_reduceNoiseImage_inst::GetClass(env);
Magick.Set("reduceNoiseImage", _Magick_reduceNoiseImage_ctor);
if (SWIGTYPE_p_Magick__reduceNoiseImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__reduceNoiseImage->clientdata = new size_t(166);
}
Napi::FunctionReference *_Magick_reduceNoiseImage_ctor_ref = new Napi::FunctionReference();
*_Magick_reduceNoiseImage_ctor_ref = Napi::Persistent(_Magick_reduceNoiseImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[166] = _Magick_reduceNoiseImage_ctor_ref;
/* Class: resizeImage (_Magick_resizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_resizeImage_ctor = _Magick_resizeImage_inst::GetClass(env);
Magick.Set("resizeImage", _Magick_resizeImage_ctor);
if (SWIGTYPE_p_Magick__resizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__resizeImage->clientdata = new size_t(167);
}
Napi::FunctionReference *_Magick_resizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_resizeImage_ctor_ref = Napi::Persistent(_Magick_resizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[167] = _Magick_resizeImage_ctor_ref;
/* Class: rollImage (_Magick_rollImage) */
// jsnapi_registerclass
Napi::Function _Magick_rollImage_ctor = _Magick_rollImage_inst::GetClass(env);
Magick.Set("rollImage", _Magick_rollImage_ctor);
if (SWIGTYPE_p_Magick__rollImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__rollImage->clientdata = new size_t(168);
}
Napi::FunctionReference *_Magick_rollImage_ctor_ref = new Napi::FunctionReference();
*_Magick_rollImage_ctor_ref = Napi::Persistent(_Magick_rollImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[168] = _Magick_rollImage_ctor_ref;
/* Class: rotateImage (_Magick_rotateImage) */
// jsnapi_registerclass
Napi::Function _Magick_rotateImage_ctor = _Magick_rotateImage_inst::GetClass(env);
Magick.Set("rotateImage", _Magick_rotateImage_ctor);
if (SWIGTYPE_p_Magick__rotateImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__rotateImage->clientdata = new size_t(169);
}
Napi::FunctionReference *_Magick_rotateImage_ctor_ref = new Napi::FunctionReference();
*_Magick_rotateImage_ctor_ref = Napi::Persistent(_Magick_rotateImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[169] = _Magick_rotateImage_ctor_ref;
/* Class: sampleImage (_Magick_sampleImage) */
// jsnapi_registerclass
Napi::Function _Magick_sampleImage_ctor = _Magick_sampleImage_inst::GetClass(env);
Magick.Set("sampleImage", _Magick_sampleImage_ctor);
if (SWIGTYPE_p_Magick__sampleImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__sampleImage->clientdata = new size_t(170);
}
Napi::FunctionReference *_Magick_sampleImage_ctor_ref = new Napi::FunctionReference();
*_Magick_sampleImage_ctor_ref = Napi::Persistent(_Magick_sampleImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[170] = _Magick_sampleImage_ctor_ref;
/* Class: scaleImage (_Magick_scaleImage) */
// jsnapi_registerclass
Napi::Function _Magick_scaleImage_ctor = _Magick_scaleImage_inst::GetClass(env);
Magick.Set("scaleImage", _Magick_scaleImage_ctor);
if (SWIGTYPE_p_Magick__scaleImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__scaleImage->clientdata = new size_t(171);
}
Napi::FunctionReference *_Magick_scaleImage_ctor_ref = new Napi::FunctionReference();
*_Magick_scaleImage_ctor_ref = Napi::Persistent(_Magick_scaleImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[171] = _Magick_scaleImage_ctor_ref;
/* Class: segmentImage (_Magick_segmentImage) */
// jsnapi_registerclass
Napi::Function _Magick_segmentImage_ctor = _Magick_segmentImage_inst::GetClass(env);
Magick.Set("segmentImage", _Magick_segmentImage_ctor);
if (SWIGTYPE_p_Magick__segmentImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__segmentImage->clientdata = new size_t(172);
}
Napi::FunctionReference *_Magick_segmentImage_ctor_ref = new Napi::FunctionReference();
*_Magick_segmentImage_ctor_ref = Napi::Persistent(_Magick_segmentImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[172] = _Magick_segmentImage_ctor_ref;
/* Class: shadeImage (_Magick_shadeImage) */
// jsnapi_registerclass
Napi::Function _Magick_shadeImage_ctor = _Magick_shadeImage_inst::GetClass(env);
Magick.Set("shadeImage", _Magick_shadeImage_ctor);
if (SWIGTYPE_p_Magick__shadeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__shadeImage->clientdata = new size_t(173);
}
Napi::FunctionReference *_Magick_shadeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_shadeImage_ctor_ref = Napi::Persistent(_Magick_shadeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[173] = _Magick_shadeImage_ctor_ref;
/* Class: shadowImage (_Magick_shadowImage) */
// jsnapi_registerclass
Napi::Function _Magick_shadowImage_ctor = _Magick_shadowImage_inst::GetClass(env);
Magick.Set("shadowImage", _Magick_shadowImage_ctor);
if (SWIGTYPE_p_Magick__shadowImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__shadowImage->clientdata = new size_t(174);
}
Napi::FunctionReference *_Magick_shadowImage_ctor_ref = new Napi::FunctionReference();
*_Magick_shadowImage_ctor_ref = Napi::Persistent(_Magick_shadowImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[174] = _Magick_shadowImage_ctor_ref;
/* Class: sharpenImage (_Magick_sharpenImage) */
// jsnapi_registerclass
Napi::Function _Magick_sharpenImage_ctor = _Magick_sharpenImage_inst::GetClass(env);
Magick.Set("sharpenImage", _Magick_sharpenImage_ctor);
if (SWIGTYPE_p_Magick__sharpenImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__sharpenImage->clientdata = new size_t(175);
}
Napi::FunctionReference *_Magick_sharpenImage_ctor_ref = new Napi::FunctionReference();
*_Magick_sharpenImage_ctor_ref = Napi::Persistent(_Magick_sharpenImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[175] = _Magick_sharpenImage_ctor_ref;
/* Class: shaveImage (_Magick_shaveImage) */
// jsnapi_registerclass
Napi::Function _Magick_shaveImage_ctor = _Magick_shaveImage_inst::GetClass(env);
Magick.Set("shaveImage", _Magick_shaveImage_ctor);
if (SWIGTYPE_p_Magick__shaveImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__shaveImage->clientdata = new size_t(176);
}
Napi::FunctionReference *_Magick_shaveImage_ctor_ref = new Napi::FunctionReference();
*_Magick_shaveImage_ctor_ref = Napi::Persistent(_Magick_shaveImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[176] = _Magick_shaveImage_ctor_ref;
/* Class: shearImage (_Magick_shearImage) */
// jsnapi_registerclass
Napi::Function _Magick_shearImage_ctor = _Magick_shearImage_inst::GetClass(env);
Magick.Set("shearImage", _Magick_shearImage_ctor);
if (SWIGTYPE_p_Magick__shearImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__shearImage->clientdata = new size_t(177);
}
Napi::FunctionReference *_Magick_shearImage_ctor_ref = new Napi::FunctionReference();
*_Magick_shearImage_ctor_ref = Napi::Persistent(_Magick_shearImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[177] = _Magick_shearImage_ctor_ref;
/* Class: solarizeImage (_Magick_solarizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_solarizeImage_ctor = _Magick_solarizeImage_inst::GetClass(env);
Magick.Set("solarizeImage", _Magick_solarizeImage_ctor);
if (SWIGTYPE_p_Magick__solarizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__solarizeImage->clientdata = new size_t(178);
}
Napi::FunctionReference *_Magick_solarizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_solarizeImage_ctor_ref = Napi::Persistent(_Magick_solarizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[178] = _Magick_solarizeImage_ctor_ref;
/* Class: spliceImage (_Magick_spliceImage) */
// jsnapi_registerclass
Napi::Function _Magick_spliceImage_ctor = _Magick_spliceImage_inst::GetClass(env);
Magick.Set("spliceImage", _Magick_spliceImage_ctor);
if (SWIGTYPE_p_Magick__spliceImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__spliceImage->clientdata = new size_t(179);
}
Napi::FunctionReference *_Magick_spliceImage_ctor_ref = new Napi::FunctionReference();
*_Magick_spliceImage_ctor_ref = Napi::Persistent(_Magick_spliceImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[179] = _Magick_spliceImage_ctor_ref;
/* Class: spreadImage (_Magick_spreadImage) */
// jsnapi_registerclass
Napi::Function _Magick_spreadImage_ctor = _Magick_spreadImage_inst::GetClass(env);
Magick.Set("spreadImage", _Magick_spreadImage_ctor);
if (SWIGTYPE_p_Magick__spreadImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__spreadImage->clientdata = new size_t(180);
}
Napi::FunctionReference *_Magick_spreadImage_ctor_ref = new Napi::FunctionReference();
*_Magick_spreadImage_ctor_ref = Napi::Persistent(_Magick_spreadImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[180] = _Magick_spreadImage_ctor_ref;
/* Class: steganoImage (_Magick_steganoImage) */
// jsnapi_registerclass
Napi::Function _Magick_steganoImage_ctor = _Magick_steganoImage_inst::GetClass(env);
Magick.Set("steganoImage", _Magick_steganoImage_ctor);
if (SWIGTYPE_p_Magick__steganoImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__steganoImage->clientdata = new size_t(181);
}
Napi::FunctionReference *_Magick_steganoImage_ctor_ref = new Napi::FunctionReference();
*_Magick_steganoImage_ctor_ref = Napi::Persistent(_Magick_steganoImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[181] = _Magick_steganoImage_ctor_ref;
/* Class: stereoImage (_Magick_stereoImage) */
// jsnapi_registerclass
Napi::Function _Magick_stereoImage_ctor = _Magick_stereoImage_inst::GetClass(env);
Magick.Set("stereoImage", _Magick_stereoImage_ctor);
if (SWIGTYPE_p_Magick__stereoImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__stereoImage->clientdata = new size_t(182);
}
Napi::FunctionReference *_Magick_stereoImage_ctor_ref = new Napi::FunctionReference();
*_Magick_stereoImage_ctor_ref = Napi::Persistent(_Magick_stereoImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[182] = _Magick_stereoImage_ctor_ref;
/* Class: strokeColorImage (_Magick_strokeColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_strokeColorImage_ctor = _Magick_strokeColorImage_inst::GetClass(env);
Magick.Set("strokeColorImage", _Magick_strokeColorImage_ctor);
if (SWIGTYPE_p_Magick__strokeColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__strokeColorImage->clientdata = new size_t(183);
}
Napi::FunctionReference *_Magick_strokeColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_strokeColorImage_ctor_ref = Napi::Persistent(_Magick_strokeColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[183] = _Magick_strokeColorImage_ctor_ref;
/* Class: swirlImage (_Magick_swirlImage) */
// jsnapi_registerclass
Napi::Function _Magick_swirlImage_ctor = _Magick_swirlImage_inst::GetClass(env);
Magick.Set("swirlImage", _Magick_swirlImage_ctor);
if (SWIGTYPE_p_Magick__swirlImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__swirlImage->clientdata = new size_t(184);
}
Napi::FunctionReference *_Magick_swirlImage_ctor_ref = new Napi::FunctionReference();
*_Magick_swirlImage_ctor_ref = Napi::Persistent(_Magick_swirlImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[184] = _Magick_swirlImage_ctor_ref;
/* Class: textureImage (_Magick_textureImage) */
// jsnapi_registerclass
Napi::Function _Magick_textureImage_ctor = _Magick_textureImage_inst::GetClass(env);
Magick.Set("textureImage", _Magick_textureImage_ctor);
if (SWIGTYPE_p_Magick__textureImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__textureImage->clientdata = new size_t(185);
}
Napi::FunctionReference *_Magick_textureImage_ctor_ref = new Napi::FunctionReference();
*_Magick_textureImage_ctor_ref = Napi::Persistent(_Magick_textureImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[185] = _Magick_textureImage_ctor_ref;
/* Class: thresholdImage (_Magick_thresholdImage) */
// jsnapi_registerclass
Napi::Function _Magick_thresholdImage_ctor = _Magick_thresholdImage_inst::GetClass(env);
Magick.Set("thresholdImage", _Magick_thresholdImage_ctor);
if (SWIGTYPE_p_Magick__thresholdImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__thresholdImage->clientdata = new size_t(186);
}
Napi::FunctionReference *_Magick_thresholdImage_ctor_ref = new Napi::FunctionReference();
*_Magick_thresholdImage_ctor_ref = Napi::Persistent(_Magick_thresholdImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[186] = _Magick_thresholdImage_ctor_ref;
/* Class: transparentImage (_Magick_transparentImage) */
// jsnapi_registerclass
Napi::Function _Magick_transparentImage_ctor = _Magick_transparentImage_inst::GetClass(env);
Magick.Set("transparentImage", _Magick_transparentImage_ctor);
if (SWIGTYPE_p_Magick__transparentImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__transparentImage->clientdata = new size_t(187);
}
Napi::FunctionReference *_Magick_transparentImage_ctor_ref = new Napi::FunctionReference();
*_Magick_transparentImage_ctor_ref = Napi::Persistent(_Magick_transparentImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[187] = _Magick_transparentImage_ctor_ref;
/* Class: trimImage (_Magick_trimImage) */
// jsnapi_registerclass
Napi::Function _Magick_trimImage_ctor = _Magick_trimImage_inst::GetClass(env);
Magick.Set("trimImage", _Magick_trimImage_ctor);
if (SWIGTYPE_p_Magick__trimImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__trimImage->clientdata = new size_t(188);
}
Napi::FunctionReference *_Magick_trimImage_ctor_ref = new Napi::FunctionReference();
*_Magick_trimImage_ctor_ref = Napi::Persistent(_Magick_trimImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[188] = _Magick_trimImage_ctor_ref;
/* Class: waveImage (_Magick_waveImage) */
// jsnapi_registerclass
Napi::Function _Magick_waveImage_ctor = _Magick_waveImage_inst::GetClass(env);
Magick.Set("waveImage", _Magick_waveImage_ctor);
if (SWIGTYPE_p_Magick__waveImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__waveImage->clientdata = new size_t(189);
}
Napi::FunctionReference *_Magick_waveImage_ctor_ref = new Napi::FunctionReference();
*_Magick_waveImage_ctor_ref = Napi::Persistent(_Magick_waveImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[189] = _Magick_waveImage_ctor_ref;
/* Class: zoomImage (_Magick_zoomImage) */
// jsnapi_registerclass
Napi::Function _Magick_zoomImage_ctor = _Magick_zoomImage_inst::GetClass(env);
Magick.Set("zoomImage", _Magick_zoomImage_ctor);
if (SWIGTYPE_p_Magick__zoomImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__zoomImage->clientdata = new size_t(190);
}
Napi::FunctionReference *_Magick_zoomImage_ctor_ref = new Napi::FunctionReference();
*_Magick_zoomImage_ctor_ref = Napi::Persistent(_Magick_zoomImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[190] = _Magick_zoomImage_ctor_ref;
/* Class: adjoinImage (_Magick_adjoinImage) */
// jsnapi_registerclass
Napi::Function _Magick_adjoinImage_ctor = _Magick_adjoinImage_inst::GetClass(env);
Magick.Set("adjoinImage", _Magick_adjoinImage_ctor);
if (SWIGTYPE_p_Magick__adjoinImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__adjoinImage->clientdata = new size_t(191);
}
Napi::FunctionReference *_Magick_adjoinImage_ctor_ref = new Napi::FunctionReference();
*_Magick_adjoinImage_ctor_ref = Napi::Persistent(_Magick_adjoinImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[191] = _Magick_adjoinImage_ctor_ref;
/* Class: animationDelayImage (_Magick_animationDelayImage) */
// jsnapi_registerclass
Napi::Function _Magick_animationDelayImage_ctor = _Magick_animationDelayImage_inst::GetClass(env);
Magick.Set("animationDelayImage", _Magick_animationDelayImage_ctor);
if (SWIGTYPE_p_Magick__animationDelayImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__animationDelayImage->clientdata = new size_t(192);
}
Napi::FunctionReference *_Magick_animationDelayImage_ctor_ref = new Napi::FunctionReference();
*_Magick_animationDelayImage_ctor_ref = Napi::Persistent(_Magick_animationDelayImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[192] = _Magick_animationDelayImage_ctor_ref;
/* Class: animationIterationsImage (_Magick_animationIterationsImage) */
// jsnapi_registerclass
Napi::Function _Magick_animationIterationsImage_ctor = _Magick_animationIterationsImage_inst::GetClass(env);
Magick.Set("animationIterationsImage", _Magick_animationIterationsImage_ctor);
if (SWIGTYPE_p_Magick__animationIterationsImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__animationIterationsImage->clientdata = new size_t(193);
}
Napi::FunctionReference *_Magick_animationIterationsImage_ctor_ref = new Napi::FunctionReference();
*_Magick_animationIterationsImage_ctor_ref = Napi::Persistent(_Magick_animationIterationsImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[193] = _Magick_animationIterationsImage_ctor_ref;
/* Class: backgroundColorImage (_Magick_backgroundColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_backgroundColorImage_ctor = _Magick_backgroundColorImage_inst::GetClass(env);
Magick.Set("backgroundColorImage", _Magick_backgroundColorImage_ctor);
if (SWIGTYPE_p_Magick__backgroundColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__backgroundColorImage->clientdata = new size_t(194);
}
Napi::FunctionReference *_Magick_backgroundColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_backgroundColorImage_ctor_ref = Napi::Persistent(_Magick_backgroundColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[194] = _Magick_backgroundColorImage_ctor_ref;
/* Class: backgroundTextureImage (_Magick_backgroundTextureImage) */
// jsnapi_registerclass
Napi::Function _Magick_backgroundTextureImage_ctor = _Magick_backgroundTextureImage_inst::GetClass(env);
Magick.Set("backgroundTextureImage", _Magick_backgroundTextureImage_ctor);
if (SWIGTYPE_p_Magick__backgroundTextureImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__backgroundTextureImage->clientdata = new size_t(195);
}
Napi::FunctionReference *_Magick_backgroundTextureImage_ctor_ref = new Napi::FunctionReference();
*_Magick_backgroundTextureImage_ctor_ref = Napi::Persistent(_Magick_backgroundTextureImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[195] = _Magick_backgroundTextureImage_ctor_ref;
/* Class: borderColorImage (_Magick_borderColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_borderColorImage_ctor = _Magick_borderColorImage_inst::GetClass(env);
Magick.Set("borderColorImage", _Magick_borderColorImage_ctor);
if (SWIGTYPE_p_Magick__borderColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__borderColorImage->clientdata = new size_t(196);
}
Napi::FunctionReference *_Magick_borderColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_borderColorImage_ctor_ref = Napi::Persistent(_Magick_borderColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[196] = _Magick_borderColorImage_ctor_ref;
/* Class: boxColorImage (_Magick_boxColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_boxColorImage_ctor = _Magick_boxColorImage_inst::GetClass(env);
Magick.Set("boxColorImage", _Magick_boxColorImage_ctor);
if (SWIGTYPE_p_Magick__boxColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__boxColorImage->clientdata = new size_t(197);
}
Napi::FunctionReference *_Magick_boxColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_boxColorImage_ctor_ref = Napi::Persistent(_Magick_boxColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[197] = _Magick_boxColorImage_ctor_ref;
/* Class: chromaBluePrimaryImage (_Magick_chromaBluePrimaryImage) */
// jsnapi_registerclass
Napi::Function _Magick_chromaBluePrimaryImage_ctor = _Magick_chromaBluePrimaryImage_inst::GetClass(env);
Magick.Set("chromaBluePrimaryImage", _Magick_chromaBluePrimaryImage_ctor);
if (SWIGTYPE_p_Magick__chromaBluePrimaryImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__chromaBluePrimaryImage->clientdata = new size_t(198);
}
Napi::FunctionReference *_Magick_chromaBluePrimaryImage_ctor_ref = new Napi::FunctionReference();
*_Magick_chromaBluePrimaryImage_ctor_ref = Napi::Persistent(_Magick_chromaBluePrimaryImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[198] = _Magick_chromaBluePrimaryImage_ctor_ref;
/* Class: chromaGreenPrimaryImage (_Magick_chromaGreenPrimaryImage) */
// jsnapi_registerclass
Napi::Function _Magick_chromaGreenPrimaryImage_ctor = _Magick_chromaGreenPrimaryImage_inst::GetClass(env);
Magick.Set("chromaGreenPrimaryImage", _Magick_chromaGreenPrimaryImage_ctor);
if (SWIGTYPE_p_Magick__chromaGreenPrimaryImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__chromaGreenPrimaryImage->clientdata = new size_t(199);
}
Napi::FunctionReference *_Magick_chromaGreenPrimaryImage_ctor_ref = new Napi::FunctionReference();
*_Magick_chromaGreenPrimaryImage_ctor_ref = Napi::Persistent(_Magick_chromaGreenPrimaryImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[199] = _Magick_chromaGreenPrimaryImage_ctor_ref;
/* Class: chromaRedPrimaryImage (_Magick_chromaRedPrimaryImage) */
// jsnapi_registerclass
Napi::Function _Magick_chromaRedPrimaryImage_ctor = _Magick_chromaRedPrimaryImage_inst::GetClass(env);
Magick.Set("chromaRedPrimaryImage", _Magick_chromaRedPrimaryImage_ctor);
if (SWIGTYPE_p_Magick__chromaRedPrimaryImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__chromaRedPrimaryImage->clientdata = new size_t(200);
}
Napi::FunctionReference *_Magick_chromaRedPrimaryImage_ctor_ref = new Napi::FunctionReference();
*_Magick_chromaRedPrimaryImage_ctor_ref = Napi::Persistent(_Magick_chromaRedPrimaryImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[200] = _Magick_chromaRedPrimaryImage_ctor_ref;
/* Class: chromaWhitePointImage (_Magick_chromaWhitePointImage) */
// jsnapi_registerclass
Napi::Function _Magick_chromaWhitePointImage_ctor = _Magick_chromaWhitePointImage_inst::GetClass(env);
Magick.Set("chromaWhitePointImage", _Magick_chromaWhitePointImage_ctor);
if (SWIGTYPE_p_Magick__chromaWhitePointImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__chromaWhitePointImage->clientdata = new size_t(201);
}
Napi::FunctionReference *_Magick_chromaWhitePointImage_ctor_ref = new Napi::FunctionReference();
*_Magick_chromaWhitePointImage_ctor_ref = Napi::Persistent(_Magick_chromaWhitePointImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[201] = _Magick_chromaWhitePointImage_ctor_ref;
/* Class: colorFuzzImage (_Magick_colorFuzzImage) */
// jsnapi_registerclass
Napi::Function _Magick_colorFuzzImage_ctor = _Magick_colorFuzzImage_inst::GetClass(env);
Magick.Set("colorFuzzImage", _Magick_colorFuzzImage_ctor);
if (SWIGTYPE_p_Magick__colorFuzzImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__colorFuzzImage->clientdata = new size_t(202);
}
Napi::FunctionReference *_Magick_colorFuzzImage_ctor_ref = new Napi::FunctionReference();
*_Magick_colorFuzzImage_ctor_ref = Napi::Persistent(_Magick_colorFuzzImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[202] = _Magick_colorFuzzImage_ctor_ref;
/* Class: colorMapImage (_Magick_colorMapImage) */
// jsnapi_registerclass
Napi::Function _Magick_colorMapImage_ctor = _Magick_colorMapImage_inst::GetClass(env);
Magick.Set("colorMapImage", _Magick_colorMapImage_ctor);
if (SWIGTYPE_p_Magick__colorMapImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__colorMapImage->clientdata = new size_t(203);
}
Napi::FunctionReference *_Magick_colorMapImage_ctor_ref = new Napi::FunctionReference();
*_Magick_colorMapImage_ctor_ref = Napi::Persistent(_Magick_colorMapImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[203] = _Magick_colorMapImage_ctor_ref;
/* Class: composeImage (_Magick_composeImage) */
// jsnapi_registerclass
Napi::Function _Magick_composeImage_ctor = _Magick_composeImage_inst::GetClass(env);
Magick.Set("composeImage", _Magick_composeImage_ctor);
if (SWIGTYPE_p_Magick__composeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__composeImage->clientdata = new size_t(204);
}
Napi::FunctionReference *_Magick_composeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_composeImage_ctor_ref = Napi::Persistent(_Magick_composeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[204] = _Magick_composeImage_ctor_ref;
/* Class: compressTypeImage (_Magick_compressTypeImage) */
// jsnapi_registerclass
Napi::Function _Magick_compressTypeImage_ctor = _Magick_compressTypeImage_inst::GetClass(env);
Magick.Set("compressTypeImage", _Magick_compressTypeImage_ctor);
if (SWIGTYPE_p_Magick__compressTypeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__compressTypeImage->clientdata = new size_t(205);
}
Napi::FunctionReference *_Magick_compressTypeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_compressTypeImage_ctor_ref = Napi::Persistent(_Magick_compressTypeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[205] = _Magick_compressTypeImage_ctor_ref;
/* Class: densityImage (_Magick_densityImage) */
// jsnapi_registerclass
Napi::Function _Magick_densityImage_ctor = _Magick_densityImage_inst::GetClass(env);
Magick.Set("densityImage", _Magick_densityImage_ctor);
if (SWIGTYPE_p_Magick__densityImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__densityImage->clientdata = new size_t(206);
}
Napi::FunctionReference *_Magick_densityImage_ctor_ref = new Napi::FunctionReference();
*_Magick_densityImage_ctor_ref = Napi::Persistent(_Magick_densityImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[206] = _Magick_densityImage_ctor_ref;
/* Class: depthImage (_Magick_depthImage) */
// jsnapi_registerclass
Napi::Function _Magick_depthImage_ctor = _Magick_depthImage_inst::GetClass(env);
Magick.Set("depthImage", _Magick_depthImage_ctor);
if (SWIGTYPE_p_Magick__depthImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__depthImage->clientdata = new size_t(207);
}
Napi::FunctionReference *_Magick_depthImage_ctor_ref = new Napi::FunctionReference();
*_Magick_depthImage_ctor_ref = Napi::Persistent(_Magick_depthImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[207] = _Magick_depthImage_ctor_ref;
/* Class: endianImage (_Magick_endianImage) */
// jsnapi_registerclass
Napi::Function _Magick_endianImage_ctor = _Magick_endianImage_inst::GetClass(env);
Magick.Set("endianImage", _Magick_endianImage_ctor);
if (SWIGTYPE_p_Magick__endianImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__endianImage->clientdata = new size_t(208);
}
Napi::FunctionReference *_Magick_endianImage_ctor_ref = new Napi::FunctionReference();
*_Magick_endianImage_ctor_ref = Napi::Persistent(_Magick_endianImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[208] = _Magick_endianImage_ctor_ref;
/* Class: fileNameImage (_Magick_fileNameImage) */
// jsnapi_registerclass
Napi::Function _Magick_fileNameImage_ctor = _Magick_fileNameImage_inst::GetClass(env);
Magick.Set("fileNameImage", _Magick_fileNameImage_ctor);
if (SWIGTYPE_p_Magick__fileNameImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__fileNameImage->clientdata = new size_t(209);
}
Napi::FunctionReference *_Magick_fileNameImage_ctor_ref = new Napi::FunctionReference();
*_Magick_fileNameImage_ctor_ref = Napi::Persistent(_Magick_fileNameImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[209] = _Magick_fileNameImage_ctor_ref;
/* Class: filterTypeImage (_Magick_filterTypeImage) */
// jsnapi_registerclass
Napi::Function _Magick_filterTypeImage_ctor = _Magick_filterTypeImage_inst::GetClass(env);
Magick.Set("filterTypeImage", _Magick_filterTypeImage_ctor);
if (SWIGTYPE_p_Magick__filterTypeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__filterTypeImage->clientdata = new size_t(210);
}
Napi::FunctionReference *_Magick_filterTypeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_filterTypeImage_ctor_ref = Napi::Persistent(_Magick_filterTypeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[210] = _Magick_filterTypeImage_ctor_ref;
/* Class: fontImage (_Magick_fontImage) */
// jsnapi_registerclass
Napi::Function _Magick_fontImage_ctor = _Magick_fontImage_inst::GetClass(env);
Magick.Set("fontImage", _Magick_fontImage_ctor);
if (SWIGTYPE_p_Magick__fontImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__fontImage->clientdata = new size_t(211);
}
Napi::FunctionReference *_Magick_fontImage_ctor_ref = new Napi::FunctionReference();
*_Magick_fontImage_ctor_ref = Napi::Persistent(_Magick_fontImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[211] = _Magick_fontImage_ctor_ref;
/* Class: fontPointsizeImage (_Magick_fontPointsizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_fontPointsizeImage_ctor = _Magick_fontPointsizeImage_inst::GetClass(env);
Magick.Set("fontPointsizeImage", _Magick_fontPointsizeImage_ctor);
if (SWIGTYPE_p_Magick__fontPointsizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__fontPointsizeImage->clientdata = new size_t(212);
}
Napi::FunctionReference *_Magick_fontPointsizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_fontPointsizeImage_ctor_ref = Napi::Persistent(_Magick_fontPointsizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[212] = _Magick_fontPointsizeImage_ctor_ref;
/* Class: gifDisposeMethodImage (_Magick_gifDisposeMethodImage) */
// jsnapi_registerclass
Napi::Function _Magick_gifDisposeMethodImage_ctor = _Magick_gifDisposeMethodImage_inst::GetClass(env);
Magick.Set("gifDisposeMethodImage", _Magick_gifDisposeMethodImage_ctor);
if (SWIGTYPE_p_Magick__gifDisposeMethodImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__gifDisposeMethodImage->clientdata = new size_t(213);
}
Napi::FunctionReference *_Magick_gifDisposeMethodImage_ctor_ref = new Napi::FunctionReference();
*_Magick_gifDisposeMethodImage_ctor_ref = Napi::Persistent(_Magick_gifDisposeMethodImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[213] = _Magick_gifDisposeMethodImage_ctor_ref;
/* Class: interlaceTypeImage (_Magick_interlaceTypeImage) */
// jsnapi_registerclass
Napi::Function _Magick_interlaceTypeImage_ctor = _Magick_interlaceTypeImage_inst::GetClass(env);
Magick.Set("interlaceTypeImage", _Magick_interlaceTypeImage_ctor);
if (SWIGTYPE_p_Magick__interlaceTypeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__interlaceTypeImage->clientdata = new size_t(214);
}
Napi::FunctionReference *_Magick_interlaceTypeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_interlaceTypeImage_ctor_ref = Napi::Persistent(_Magick_interlaceTypeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[214] = _Magick_interlaceTypeImage_ctor_ref;
/* Class: magickImage (_Magick_magickImage) */
// jsnapi_registerclass
Napi::Function _Magick_magickImage_ctor = _Magick_magickImage_inst::GetClass(env);
Magick.Set("magickImage", _Magick_magickImage_ctor);
if (SWIGTYPE_p_Magick__magickImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__magickImage->clientdata = new size_t(215);
}
Napi::FunctionReference *_Magick_magickImage_ctor_ref = new Napi::FunctionReference();
*_Magick_magickImage_ctor_ref = Napi::Persistent(_Magick_magickImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[215] = _Magick_magickImage_ctor_ref;
/* Class: alphaFlagImage (_Magick_alphaFlagImage) */
// jsnapi_registerclass
Napi::Function _Magick_alphaFlagImage_ctor = _Magick_alphaFlagImage_inst::GetClass(env);
Magick.Set("alphaFlagImage", _Magick_alphaFlagImage_ctor);
if (SWIGTYPE_p_Magick__alphaFlagImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__alphaFlagImage->clientdata = new size_t(216);
}
Napi::FunctionReference *_Magick_alphaFlagImage_ctor_ref = new Napi::FunctionReference();
*_Magick_alphaFlagImage_ctor_ref = Napi::Persistent(_Magick_alphaFlagImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[216] = _Magick_alphaFlagImage_ctor_ref;
/* Class: matteColorImage (_Magick_matteColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_matteColorImage_ctor = _Magick_matteColorImage_inst::GetClass(env);
Magick.Set("matteColorImage", _Magick_matteColorImage_ctor);
if (SWIGTYPE_p_Magick__matteColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__matteColorImage->clientdata = new size_t(217);
}
Napi::FunctionReference *_Magick_matteColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_matteColorImage_ctor_ref = Napi::Persistent(_Magick_matteColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[217] = _Magick_matteColorImage_ctor_ref;
/* Class: monochromeImage (_Magick_monochromeImage) */
// jsnapi_registerclass
Napi::Function _Magick_monochromeImage_ctor = _Magick_monochromeImage_inst::GetClass(env);
Magick.Set("monochromeImage", _Magick_monochromeImage_ctor);
if (SWIGTYPE_p_Magick__monochromeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__monochromeImage->clientdata = new size_t(218);
}
Napi::FunctionReference *_Magick_monochromeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_monochromeImage_ctor_ref = Napi::Persistent(_Magick_monochromeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[218] = _Magick_monochromeImage_ctor_ref;
/* Class: pixelColorImage (_Magick_pixelColorImage) */
// jsnapi_registerclass
Napi::Function _Magick_pixelColorImage_ctor = _Magick_pixelColorImage_inst::GetClass(env);
Magick.Set("pixelColorImage", _Magick_pixelColorImage_ctor);
if (SWIGTYPE_p_Magick__pixelColorImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__pixelColorImage->clientdata = new size_t(219);
}
Napi::FunctionReference *_Magick_pixelColorImage_ctor_ref = new Napi::FunctionReference();
*_Magick_pixelColorImage_ctor_ref = Napi::Persistent(_Magick_pixelColorImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[219] = _Magick_pixelColorImage_ctor_ref;
/* Class: pageImage (_Magick_pageImage) */
// jsnapi_registerclass
Napi::Function _Magick_pageImage_ctor = _Magick_pageImage_inst::GetClass(env);
Magick.Set("pageImage", _Magick_pageImage_ctor);
if (SWIGTYPE_p_Magick__pageImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__pageImage->clientdata = new size_t(220);
}
Napi::FunctionReference *_Magick_pageImage_ctor_ref = new Napi::FunctionReference();
*_Magick_pageImage_ctor_ref = Napi::Persistent(_Magick_pageImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[220] = _Magick_pageImage_ctor_ref;
/* Class: qualityImage (_Magick_qualityImage) */
// jsnapi_registerclass
Napi::Function _Magick_qualityImage_ctor = _Magick_qualityImage_inst::GetClass(env);
Magick.Set("qualityImage", _Magick_qualityImage_ctor);
if (SWIGTYPE_p_Magick__qualityImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__qualityImage->clientdata = new size_t(221);
}
Napi::FunctionReference *_Magick_qualityImage_ctor_ref = new Napi::FunctionReference();
*_Magick_qualityImage_ctor_ref = Napi::Persistent(_Magick_qualityImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[221] = _Magick_qualityImage_ctor_ref;
/* Class: quantizeColorsImage (_Magick_quantizeColorsImage) */
// jsnapi_registerclass
Napi::Function _Magick_quantizeColorsImage_ctor = _Magick_quantizeColorsImage_inst::GetClass(env);
Magick.Set("quantizeColorsImage", _Magick_quantizeColorsImage_ctor);
if (SWIGTYPE_p_Magick__quantizeColorsImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__quantizeColorsImage->clientdata = new size_t(222);
}
Napi::FunctionReference *_Magick_quantizeColorsImage_ctor_ref = new Napi::FunctionReference();
*_Magick_quantizeColorsImage_ctor_ref = Napi::Persistent(_Magick_quantizeColorsImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[222] = _Magick_quantizeColorsImage_ctor_ref;
/* Class: quantizeColorSpaceImage (_Magick_quantizeColorSpaceImage) */
// jsnapi_registerclass
Napi::Function _Magick_quantizeColorSpaceImage_ctor = _Magick_quantizeColorSpaceImage_inst::GetClass(env);
Magick.Set("quantizeColorSpaceImage", _Magick_quantizeColorSpaceImage_ctor);
if (SWIGTYPE_p_Magick__quantizeColorSpaceImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__quantizeColorSpaceImage->clientdata = new size_t(223);
}
Napi::FunctionReference *_Magick_quantizeColorSpaceImage_ctor_ref = new Napi::FunctionReference();
*_Magick_quantizeColorSpaceImage_ctor_ref = Napi::Persistent(_Magick_quantizeColorSpaceImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[223] = _Magick_quantizeColorSpaceImage_ctor_ref;
/* Class: quantizeDitherImage (_Magick_quantizeDitherImage) */
// jsnapi_registerclass
Napi::Function _Magick_quantizeDitherImage_ctor = _Magick_quantizeDitherImage_inst::GetClass(env);
Magick.Set("quantizeDitherImage", _Magick_quantizeDitherImage_ctor);
if (SWIGTYPE_p_Magick__quantizeDitherImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__quantizeDitherImage->clientdata = new size_t(224);
}
Napi::FunctionReference *_Magick_quantizeDitherImage_ctor_ref = new Napi::FunctionReference();
*_Magick_quantizeDitherImage_ctor_ref = Napi::Persistent(_Magick_quantizeDitherImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[224] = _Magick_quantizeDitherImage_ctor_ref;
/* Class: quantizeTreeDepthImage (_Magick_quantizeTreeDepthImage) */
// jsnapi_registerclass
Napi::Function _Magick_quantizeTreeDepthImage_ctor = _Magick_quantizeTreeDepthImage_inst::GetClass(env);
Magick.Set("quantizeTreeDepthImage", _Magick_quantizeTreeDepthImage_ctor);
if (SWIGTYPE_p_Magick__quantizeTreeDepthImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__quantizeTreeDepthImage->clientdata = new size_t(225);
}
Napi::FunctionReference *_Magick_quantizeTreeDepthImage_ctor_ref = new Napi::FunctionReference();
*_Magick_quantizeTreeDepthImage_ctor_ref = Napi::Persistent(_Magick_quantizeTreeDepthImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[225] = _Magick_quantizeTreeDepthImage_ctor_ref;
/* Class: renderingIntentImage (_Magick_renderingIntentImage) */
// jsnapi_registerclass
Napi::Function _Magick_renderingIntentImage_ctor = _Magick_renderingIntentImage_inst::GetClass(env);
Magick.Set("renderingIntentImage", _Magick_renderingIntentImage_ctor);
if (SWIGTYPE_p_Magick__renderingIntentImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__renderingIntentImage->clientdata = new size_t(226);
}
Napi::FunctionReference *_Magick_renderingIntentImage_ctor_ref = new Napi::FunctionReference();
*_Magick_renderingIntentImage_ctor_ref = Napi::Persistent(_Magick_renderingIntentImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[226] = _Magick_renderingIntentImage_ctor_ref;
/* Class: resolutionUnitsImage (_Magick_resolutionUnitsImage) */
// jsnapi_registerclass
Napi::Function _Magick_resolutionUnitsImage_ctor = _Magick_resolutionUnitsImage_inst::GetClass(env);
Magick.Set("resolutionUnitsImage", _Magick_resolutionUnitsImage_ctor);
if (SWIGTYPE_p_Magick__resolutionUnitsImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__resolutionUnitsImage->clientdata = new size_t(227);
}
Napi::FunctionReference *_Magick_resolutionUnitsImage_ctor_ref = new Napi::FunctionReference();
*_Magick_resolutionUnitsImage_ctor_ref = Napi::Persistent(_Magick_resolutionUnitsImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[227] = _Magick_resolutionUnitsImage_ctor_ref;
/* Class: sceneImage (_Magick_sceneImage) */
// jsnapi_registerclass
Napi::Function _Magick_sceneImage_ctor = _Magick_sceneImage_inst::GetClass(env);
Magick.Set("sceneImage", _Magick_sceneImage_ctor);
if (SWIGTYPE_p_Magick__sceneImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__sceneImage->clientdata = new size_t(228);
}
Napi::FunctionReference *_Magick_sceneImage_ctor_ref = new Napi::FunctionReference();
*_Magick_sceneImage_ctor_ref = Napi::Persistent(_Magick_sceneImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[228] = _Magick_sceneImage_ctor_ref;
/* Class: sizeImage (_Magick_sizeImage) */
// jsnapi_registerclass
Napi::Function _Magick_sizeImage_ctor = _Magick_sizeImage_inst::GetClass(env);
Magick.Set("sizeImage", _Magick_sizeImage_ctor);
if (SWIGTYPE_p_Magick__sizeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__sizeImage->clientdata = new size_t(229);
}
Napi::FunctionReference *_Magick_sizeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_sizeImage_ctor_ref = Napi::Persistent(_Magick_sizeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[229] = _Magick_sizeImage_ctor_ref;
/* Class: stripImage (_Magick_stripImage) */
// jsnapi_registerclass
Napi::Function _Magick_stripImage_ctor = _Magick_stripImage_inst::GetClass(env);
Magick.Set("stripImage", _Magick_stripImage_ctor);
if (SWIGTYPE_p_Magick__stripImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__stripImage->clientdata = new size_t(230);
}
Napi::FunctionReference *_Magick_stripImage_ctor_ref = new Napi::FunctionReference();
*_Magick_stripImage_ctor_ref = Napi::Persistent(_Magick_stripImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[230] = _Magick_stripImage_ctor_ref;
/* Class: subImageImage (_Magick_subImageImage) */
// jsnapi_registerclass
Napi::Function _Magick_subImageImage_ctor = _Magick_subImageImage_inst::GetClass(env);
Magick.Set("subImageImage", _Magick_subImageImage_ctor);
if (SWIGTYPE_p_Magick__subImageImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__subImageImage->clientdata = new size_t(231);
}
Napi::FunctionReference *_Magick_subImageImage_ctor_ref = new Napi::FunctionReference();
*_Magick_subImageImage_ctor_ref = Napi::Persistent(_Magick_subImageImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[231] = _Magick_subImageImage_ctor_ref;
/* Class: subRangeImage (_Magick_subRangeImage) */
// jsnapi_registerclass
Napi::Function _Magick_subRangeImage_ctor = _Magick_subRangeImage_inst::GetClass(env);
Magick.Set("subRangeImage", _Magick_subRangeImage_ctor);
if (SWIGTYPE_p_Magick__subRangeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__subRangeImage->clientdata = new size_t(232);
}
Napi::FunctionReference *_Magick_subRangeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_subRangeImage_ctor_ref = Napi::Persistent(_Magick_subRangeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[232] = _Magick_subRangeImage_ctor_ref;
/* Class: textAntiAliasImage (_Magick_textAntiAliasImage) */
// jsnapi_registerclass
Napi::Function _Magick_textAntiAliasImage_ctor = _Magick_textAntiAliasImage_inst::GetClass(env);
Magick.Set("textAntiAliasImage", _Magick_textAntiAliasImage_ctor);
if (SWIGTYPE_p_Magick__textAntiAliasImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__textAntiAliasImage->clientdata = new size_t(233);
}
Napi::FunctionReference *_Magick_textAntiAliasImage_ctor_ref = new Napi::FunctionReference();
*_Magick_textAntiAliasImage_ctor_ref = Napi::Persistent(_Magick_textAntiAliasImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[233] = _Magick_textAntiAliasImage_ctor_ref;
/* Class: typeImage (_Magick_typeImage) */
// jsnapi_registerclass
Napi::Function _Magick_typeImage_ctor = _Magick_typeImage_inst::GetClass(env);
Magick.Set("typeImage", _Magick_typeImage_ctor);
if (SWIGTYPE_p_Magick__typeImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__typeImage->clientdata = new size_t(234);
}
Napi::FunctionReference *_Magick_typeImage_ctor_ref = new Napi::FunctionReference();
*_Magick_typeImage_ctor_ref = Napi::Persistent(_Magick_typeImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[234] = _Magick_typeImage_ctor_ref;
/* Class: verboseImage (_Magick_verboseImage) */
// jsnapi_registerclass
Napi::Function _Magick_verboseImage_ctor = _Magick_verboseImage_inst::GetClass(env);
Magick.Set("verboseImage", _Magick_verboseImage_ctor);
if (SWIGTYPE_p_Magick__verboseImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__verboseImage->clientdata = new size_t(235);
}
Napi::FunctionReference *_Magick_verboseImage_ctor_ref = new Napi::FunctionReference();
*_Magick_verboseImage_ctor_ref = Napi::Persistent(_Magick_verboseImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[235] = _Magick_verboseImage_ctor_ref;
/* Class: x11DisplayImage (_Magick_x11DisplayImage) */
// jsnapi_registerclass
Napi::Function _Magick_x11DisplayImage_ctor = _Magick_x11DisplayImage_inst::GetClass(env);
Magick.Set("x11DisplayImage", _Magick_x11DisplayImage_ctor);
if (SWIGTYPE_p_Magick__x11DisplayImage->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_Magick__x11DisplayImage->clientdata = new size_t(236);
}
Napi::FunctionReference *_Magick_x11DisplayImage_ctor_ref = new Napi::FunctionReference();
*_Magick_x11DisplayImage_ctor_ref = Napi::Persistent(_Magick_x11DisplayImage_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[236] = _Magick_x11DisplayImage_ctor_ref;
/* Class: coderInfoArray (_std_coderInfoArray) */
// jsnapi_registerclass
Napi::Function _std_coderInfoArray_ctor = _std_coderInfoArray_inst::GetClass(env);
std.Set("coderInfoArray", _std_coderInfoArray_ctor);
if (SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t->clientdata == SWIG_NULLPTR) {
  SWIGTYPE_p_std__vectorT_Magick__CoderInfo_t->clientdata = new size_t(237);
}
Napi::FunctionReference *_std_coderInfoArray_ctor_ref = new Napi::FunctionReference();
*_std_coderInfoArray_ctor_ref = Napi::Persistent(_std_coderInfoArray_ctor);
env.GetInstanceData<EnvInstanceData>()->ctor[237] = _std_coderInfoArray_ctor_ref;


  /* enable inheritance */
  
Napi::Value jsObjectValue, jsSetProtoValue;
Napi::Object jsObject;
Napi::Function setProto;
NAPI_CHECK_RESULT(env.Global().Get("Object"), jsObjectValue);
NAPI_CHECK_RESULT(jsObjectValue.ToObject(), jsObject);
NAPI_CHECK_RESULT(jsObject.Get("setPrototypeOf"), jsSetProtoValue);
setProto = jsSetProtoValue.As<Napi::Function>();



  /* setup inheritances */
  
// Inheritance for _Magick_Blob (Blob) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Blob_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Blob_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Color (Color) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Color_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Color_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ColorCMYK (ColorCMYK) <- _Magick_Color
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ColorCMYK_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_Color_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ColorCMYK_ctor, _Magick_Color_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ColorGray (ColorGray) <- _Magick_Color
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ColorGray_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_Color_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ColorGray_ctor, _Magick_Color_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ColorHSL (ColorHSL) <- _Magick_Color
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ColorHSL_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_Color_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ColorHSL_ctor, _Magick_Color_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ColorMono (ColorMono) <- _Magick_Color
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ColorMono_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_Color_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ColorMono_ctor, _Magick_Color_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ColorRGB (ColorRGB) <- _Magick_Color
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ColorRGB_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_Color_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ColorRGB_ctor, _Magick_Color_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ColorYUV (ColorYUV) <- _Magick_Color
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ColorYUV_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_Color_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ColorYUV_ctor, _Magick_Color_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Geometry (Geometry) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Geometry_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Geometry_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Offset (Offset) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Offset_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Offset_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Point (Point) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Point_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Point_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Coordinate (Coordinate) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Coordinate_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Coordinate_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableBase (DrawableBase) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableBase_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Drawable (Drawable) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Drawable_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Drawable_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_VPathBase (VPathBase) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_VPathBase_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_VPath (VPath) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_VPath_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_VPath_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableAffine (DrawableAffine) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableAffine_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableAffine_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableAlpha (DrawableAlpha) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableAlpha_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableAlpha_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableArc (DrawableArc) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableArc_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableArc_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableBezier (DrawableBezier) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableBezier_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableBezier_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableBorderColor (DrawableBorderColor) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableBorderColor_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableBorderColor_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableClipRule (DrawableClipRule) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableClipRule_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableClipRule_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableClipUnits (DrawableClipUnits) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableClipUnits_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableClipUnits_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePopClipPath (DrawablePopClipPath) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePopClipPath_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePopClipPath_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePushClipPath (DrawablePushClipPath) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePushClipPath_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePushClipPath_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableClipPath (DrawableClipPath) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableClipPath_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableClipPath_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableCircle (DrawableCircle) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableCircle_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableCircle_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableColor (DrawableColor) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableColor_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableColor_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableCompositeImage (DrawableCompositeImage) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableCompositeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableCompositeImage_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableDensity (DrawableDensity) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableDensity_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableDensity_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableEllipse (DrawableEllipse) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableEllipse_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableEllipse_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableFillColor (DrawableFillColor) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableFillColor_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableFillColor_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableFillPatternUrl (DrawableFillPatternUrl) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableFillPatternUrl_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableFillPatternUrl_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableFillRule (DrawableFillRule) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableFillRule_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableFillRule_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableFillOpacity (DrawableFillOpacity) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableFillOpacity_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableFillOpacity_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableFont (DrawableFont) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableFont_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableFont_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableGravity (DrawableGravity) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableGravity_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableGravity_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableLine (DrawableLine) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableLine_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableLine_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePath (DrawablePath) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePath_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePath_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePoint (DrawablePoint) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePoint_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePoint_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePointSize (DrawablePointSize) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePointSize_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePointSize_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePolygon (DrawablePolygon) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePolygon_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePolygon_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePolyline (DrawablePolyline) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePolyline_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePolyline_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePopGraphicContext (DrawablePopGraphicContext) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePopGraphicContext_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePopGraphicContext_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePushGraphicContext (DrawablePushGraphicContext) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePushGraphicContext_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePushGraphicContext_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePopPattern (DrawablePopPattern) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePopPattern_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePopPattern_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawablePushPattern (DrawablePushPattern) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawablePushPattern_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawablePushPattern_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableRectangle (DrawableRectangle) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableRectangle_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableRectangle_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableRotation (DrawableRotation) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableRotation_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableRotation_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableRoundRectangle (DrawableRoundRectangle) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableRoundRectangle_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableRoundRectangle_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableScaling (DrawableScaling) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableScaling_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableScaling_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableSkewX (DrawableSkewX) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableSkewX_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableSkewX_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableSkewY (DrawableSkewY) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableSkewY_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableSkewY_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeDashArray (DrawableStrokeDashArray) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeDashArray_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeDashArray_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeDashOffset (DrawableStrokeDashOffset) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeDashOffset_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeDashOffset_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeLineCap (DrawableStrokeLineCap) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeLineCap_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeLineCap_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeLineJoin (DrawableStrokeLineJoin) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeLineJoin_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeLineJoin_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableMiterLimit (DrawableMiterLimit) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableMiterLimit_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableMiterLimit_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokePatternUrl (DrawableStrokePatternUrl) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokePatternUrl_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokePatternUrl_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeAntialias (DrawableStrokeAntialias) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeAntialias_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeAntialias_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeColor (DrawableStrokeColor) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeColor_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeColor_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeOpacity (DrawableStrokeOpacity) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeOpacity_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeOpacity_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableStrokeWidth (DrawableStrokeWidth) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableStrokeWidth_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableStrokeWidth_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableText (DrawableText) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableText_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableText_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextAlignment (DrawableTextAlignment) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextAlignment_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextAlignment_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextAntialias (DrawableTextAntialias) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextAntialias_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextAntialias_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextDecoration (DrawableTextDecoration) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextDecoration_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextDecoration_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextDirection (DrawableTextDirection) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextDirection_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextDirection_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextInterlineSpacing (DrawableTextInterlineSpacing) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextInterlineSpacing_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextInterlineSpacing_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextInterwordSpacing (DrawableTextInterwordSpacing) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextInterwordSpacing_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextInterwordSpacing_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextKerning (DrawableTextKerning) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextKerning_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextKerning_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTextUnderColor (DrawableTextUnderColor) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTextUnderColor_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTextUnderColor_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableTranslation (DrawableTranslation) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableTranslation_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableTranslation_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_DrawableViewbox (DrawableViewbox) <- _Magick_DrawableBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_DrawableViewbox_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_DrawableBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_DrawableViewbox_ctor, _Magick_DrawableBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathArcArgs (PathArcArgs) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathArcArgs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathArcArgs_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathArcAbs (PathArcAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathArcAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathArcAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathArcRel (PathArcRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathArcRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathArcRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathClosePath (PathClosePath) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathClosePath_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathClosePath_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathCurvetoArgs (PathCurvetoArgs) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathCurvetoArgs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathCurvetoArgs_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathCurvetoAbs (PathCurvetoAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathCurvetoAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathCurvetoAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathCurvetoRel (PathCurvetoRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathCurvetoRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathCurvetoRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathSmoothCurvetoAbs (PathSmoothCurvetoAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathSmoothCurvetoAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathSmoothCurvetoAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathSmoothCurvetoRel (PathSmoothCurvetoRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathSmoothCurvetoRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathSmoothCurvetoRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathQuadraticCurvetoArgs (PathQuadraticCurvetoArgs) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathQuadraticCurvetoArgs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathQuadraticCurvetoArgs_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathQuadraticCurvetoAbs (PathQuadraticCurvetoAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathQuadraticCurvetoAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathQuadraticCurvetoAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathQuadraticCurvetoRel (PathQuadraticCurvetoRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathQuadraticCurvetoRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathQuadraticCurvetoRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathSmoothQuadraticCurvetoAbs (PathSmoothQuadraticCurvetoAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathSmoothQuadraticCurvetoAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathSmoothQuadraticCurvetoAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathSmoothQuadraticCurvetoRel (PathSmoothQuadraticCurvetoRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathSmoothQuadraticCurvetoRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathSmoothQuadraticCurvetoRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathLinetoAbs (PathLinetoAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathLinetoAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathLinetoAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathLinetoRel (PathLinetoRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathLinetoRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathLinetoRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathLinetoHorizontalAbs (PathLinetoHorizontalAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathLinetoHorizontalAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathLinetoHorizontalAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathLinetoHorizontalRel (PathLinetoHorizontalRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathLinetoHorizontalRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathLinetoHorizontalRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathLinetoVerticalAbs (PathLinetoVerticalAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathLinetoVerticalAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathLinetoVerticalAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathLinetoVerticalRel (PathLinetoVerticalRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathLinetoVerticalRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathLinetoVerticalRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathMovetoAbs (PathMovetoAbs) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathMovetoAbs_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathMovetoAbs_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_PathMovetoRel (PathMovetoRel) <- _Magick_VPathBase
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_PathMovetoRel_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_VPathBase_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_PathMovetoRel_ctor, _Magick_VPathBase_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ErrorPolicy (ErrorPolicy) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ErrorPolicy_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ErrorPolicy_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ErrorType (ErrorType) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ErrorType_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ErrorType_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_WarningPolicy (WarningPolicy) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_WarningPolicy_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_WarningPolicy_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_WarningType (WarningType) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_WarningType_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_WarningType_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ChannelMoments (ChannelMoments) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ChannelMoments_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ChannelMoments_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ChannelPerceptualHash (ChannelPerceptualHash) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ChannelPerceptualHash_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ChannelPerceptualHash_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ChannelStatistics (ChannelStatistics) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ChannelStatistics_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ChannelStatistics_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ImageMoments (ImageMoments) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ImageMoments_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ImageMoments_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ImagePerceptualHash (ImagePerceptualHash) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ImagePerceptualHash_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ImagePerceptualHash_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ImageStatistics (ImageStatistics) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ImageStatistics_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ImageStatistics_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_TypeMetric (TypeMetric) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_TypeMetric_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_TypeMetric_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Image (Image) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Image_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Image_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ResourceLimits (ResourceLimits) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ResourceLimits_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ResourceLimits_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_CoderInfo (CoderInfo) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_CoderInfo_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_CoderInfo_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_Montage (Montage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_Montage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_Montage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_MontageFramed (MontageFramed) <- _Magick_Montage
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_MontageFramed_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(_Magick_Montage_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_MontageFramed_ctor, _Magick_Montage_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_adaptiveBlurImage (adaptiveBlurImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_adaptiveBlurImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_adaptiveBlurImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_adaptiveThresholdImage (adaptiveThresholdImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_adaptiveThresholdImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_adaptiveThresholdImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_addNoiseImage (addNoiseImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_addNoiseImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_addNoiseImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_affineTransformImage (affineTransformImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_affineTransformImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_affineTransformImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_annotateImage (annotateImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_annotateImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_annotateImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_blurImage (blurImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_blurImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_blurImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_borderImage (borderImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_borderImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_borderImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_channelImage (channelImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_channelImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_channelImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_charcoalImage (charcoalImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_charcoalImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_charcoalImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_chopImage (chopImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_chopImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_chopImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_cdlImage (cdlImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_cdlImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_cdlImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_colorizeImage (colorizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_colorizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_colorizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_colorMatrixImage (colorMatrixImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_colorMatrixImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_colorMatrixImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_colorSpaceImage (colorSpaceImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_colorSpaceImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_colorSpaceImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_commentImage (commentImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_commentImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_commentImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_compositeImage (compositeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_compositeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_compositeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_contrastImage (contrastImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_contrastImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_contrastImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_cropImage (cropImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_cropImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_cropImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_cycleColormapImage (cycleColormapImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_cycleColormapImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_cycleColormapImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_despeckleImage (despeckleImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_despeckleImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_despeckleImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_distortImage (distortImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_distortImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_distortImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_drawImage (drawImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_drawImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_drawImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_edgeImage (edgeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_edgeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_edgeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_embossImage (embossImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_embossImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_embossImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_enhanceImage (enhanceImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_enhanceImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_enhanceImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_equalizeImage (equalizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_equalizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_equalizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_fillColorImage (fillColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_fillColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_fillColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_flipImage (flipImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_flipImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_flipImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_floodFillAlphaImage (floodFillAlphaImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_floodFillAlphaImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_floodFillAlphaImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_floodFillColorImage (floodFillColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_floodFillColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_floodFillColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_floodFillTextureImage (floodFillTextureImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_floodFillTextureImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_floodFillTextureImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_flopImage (flopImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_flopImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_flopImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_frameImage (frameImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_frameImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_frameImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_gammaImage (gammaImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_gammaImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_gammaImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_gaussianBlurImage (gaussianBlurImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_gaussianBlurImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_gaussianBlurImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_haldClutImage (haldClutImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_haldClutImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_haldClutImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_implodeImage (implodeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_implodeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_implodeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_inverseFourierTransformImage (inverseFourierTransformImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_inverseFourierTransformImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_inverseFourierTransformImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_isValidImage (isValidImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_isValidImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_isValidImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_labelImage (labelImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_labelImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_labelImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_levelImage (levelImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_levelImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_levelImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_magnifyImage (magnifyImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_magnifyImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_magnifyImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_mapImage (mapImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_mapImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_mapImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_medianConvolveImage (medianConvolveImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_medianConvolveImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_medianConvolveImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_minifyImage (minifyImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_minifyImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_minifyImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_modulateImage (modulateImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_modulateImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_modulateImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_negateImage (negateImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_negateImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_negateImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_normalizeImage (normalizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_normalizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_normalizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_oilPaintImage (oilPaintImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_oilPaintImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_oilPaintImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_alphaImage (alphaImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_alphaImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_alphaImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_opaqueImage (opaqueImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_opaqueImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_opaqueImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_quantizeImage (quantizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_quantizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_quantizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_raiseImage (raiseImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_raiseImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_raiseImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_ReadOptions (ReadOptions) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_ReadOptions_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_ReadOptions_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_reduceNoiseImage (reduceNoiseImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_reduceNoiseImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_reduceNoiseImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_resizeImage (resizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_resizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_resizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_rollImage (rollImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_rollImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_rollImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_rotateImage (rotateImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_rotateImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_rotateImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_sampleImage (sampleImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_sampleImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_sampleImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_scaleImage (scaleImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_scaleImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_scaleImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_segmentImage (segmentImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_segmentImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_segmentImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_shadeImage (shadeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_shadeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_shadeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_shadowImage (shadowImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_shadowImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_shadowImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_sharpenImage (sharpenImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_sharpenImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_sharpenImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_shaveImage (shaveImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_shaveImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_shaveImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_shearImage (shearImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_shearImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_shearImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_solarizeImage (solarizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_solarizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_solarizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_spliceImage (spliceImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_spliceImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_spliceImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_spreadImage (spreadImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_spreadImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_spreadImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_steganoImage (steganoImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_steganoImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_steganoImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_stereoImage (stereoImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_stereoImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_stereoImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_strokeColorImage (strokeColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_strokeColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_strokeColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_swirlImage (swirlImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_swirlImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_swirlImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_textureImage (textureImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_textureImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_textureImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_thresholdImage (thresholdImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_thresholdImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_thresholdImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_transparentImage (transparentImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_transparentImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_transparentImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_trimImage (trimImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_trimImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_trimImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_waveImage (waveImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_waveImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_waveImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_zoomImage (zoomImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_zoomImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_zoomImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_adjoinImage (adjoinImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_adjoinImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_adjoinImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_animationDelayImage (animationDelayImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_animationDelayImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_animationDelayImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_animationIterationsImage (animationIterationsImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_animationIterationsImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_animationIterationsImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_backgroundColorImage (backgroundColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_backgroundColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_backgroundColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_backgroundTextureImage (backgroundTextureImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_backgroundTextureImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_backgroundTextureImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_borderColorImage (borderColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_borderColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_borderColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_boxColorImage (boxColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_boxColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_boxColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_chromaBluePrimaryImage (chromaBluePrimaryImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_chromaBluePrimaryImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_chromaBluePrimaryImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_chromaGreenPrimaryImage (chromaGreenPrimaryImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_chromaGreenPrimaryImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_chromaGreenPrimaryImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_chromaRedPrimaryImage (chromaRedPrimaryImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_chromaRedPrimaryImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_chromaRedPrimaryImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_chromaWhitePointImage (chromaWhitePointImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_chromaWhitePointImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_chromaWhitePointImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_colorFuzzImage (colorFuzzImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_colorFuzzImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_colorFuzzImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_colorMapImage (colorMapImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_colorMapImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_colorMapImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_composeImage (composeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_composeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_composeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_compressTypeImage (compressTypeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_compressTypeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_compressTypeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_densityImage (densityImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_densityImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_densityImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_depthImage (depthImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_depthImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_depthImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_endianImage (endianImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_endianImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_endianImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_fileNameImage (fileNameImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_fileNameImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_fileNameImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_filterTypeImage (filterTypeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_filterTypeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_filterTypeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_fontImage (fontImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_fontImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_fontImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_fontPointsizeImage (fontPointsizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_fontPointsizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_fontPointsizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_gifDisposeMethodImage (gifDisposeMethodImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_gifDisposeMethodImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_gifDisposeMethodImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_interlaceTypeImage (interlaceTypeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_interlaceTypeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_interlaceTypeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_magickImage (magickImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_magickImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_magickImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_alphaFlagImage (alphaFlagImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_alphaFlagImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_alphaFlagImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_matteColorImage (matteColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_matteColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_matteColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_monochromeImage (monochromeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_monochromeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_monochromeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_pixelColorImage (pixelColorImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_pixelColorImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_pixelColorImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_pageImage (pageImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_pageImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_pageImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_qualityImage (qualityImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_qualityImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_qualityImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_quantizeColorsImage (quantizeColorsImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_quantizeColorsImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_quantizeColorsImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_quantizeColorSpaceImage (quantizeColorSpaceImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_quantizeColorSpaceImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_quantizeColorSpaceImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_quantizeDitherImage (quantizeDitherImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_quantizeDitherImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_quantizeDitherImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_quantizeTreeDepthImage (quantizeTreeDepthImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_quantizeTreeDepthImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_quantizeTreeDepthImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_renderingIntentImage (renderingIntentImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_renderingIntentImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_renderingIntentImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_resolutionUnitsImage (resolutionUnitsImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_resolutionUnitsImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_resolutionUnitsImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_sceneImage (sceneImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_sceneImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_sceneImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_sizeImage (sizeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_sizeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_sizeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_stripImage (stripImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_stripImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_stripImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_subImageImage (subImageImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_subImageImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_subImageImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_subRangeImage (subRangeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_subRangeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_subRangeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_textAntiAliasImage (textAntiAliasImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_textAntiAliasImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_textAntiAliasImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_typeImage (typeImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_typeImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_typeImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_verboseImage (verboseImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_verboseImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_verboseImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _Magick_x11DisplayImage (x11DisplayImage) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_Magick_x11DisplayImage_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _Magick_x11DisplayImage_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);


// Inheritance for _std_coderInfoArray (coderInfoArray) <- SWIG_NAPI_ObjectWrap
// jsnapi_setup_inheritance
do {
  Napi::Value protoBase, protoSub;
  NAPI_CHECK_RESULT(_std_coderInfoArray_ctor.Get("prototype"), protoSub);
  NAPI_CHECK_RESULT(SWIG_NAPI_ObjectWrap_ctor.Get("prototype"), protoBase);
  NAPI_CHECK_MAYBE(setProto.Call({
    _std_coderInfoArray_ctor, SWIG_NAPI_ObjectWrap_ctor
  }));
  NAPI_CHECK_MAYBE(setProto.Call({
    protoSub, protoBase
  }));
} while (0);



  /* create and register namespace objects */
  // jsnapi_register_namespace
NAPI_CHECK_MAYBE(exports.Set("std", std));
// jsnapi_register_namespace
NAPI_CHECK_MAYBE(exports.Set("Magick", Magick));
// jsnapi_register_namespace
NAPI_CHECK_MAYBE(exports.Set("MagickCore", MagickCore));
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_NAPI_VERSION_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NAPI_VERSION", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickCoreSignature_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickCoreSignature", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickPathExtent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickPathExtent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickTimeExtent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickTimeExtent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickEpsilon_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickEpsilon", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickMaximumValue_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickMaximumValue", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickMinimumValue_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickMinimumValue", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickOffsetFormat_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickOffsetFormat", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickSizeFormat_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickSizeFormat", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedClass_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedClass", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DirectClass_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DirectClass", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PseudoClass_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PseudoClass", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagickFalse_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickFalse", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagickTrue_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickTrue", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ForgetGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ForgetGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NorthWestGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NorthWestGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NorthGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NorthGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NorthEastGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NorthEastGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WestGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WestGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CenterGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CenterGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_EastGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("EastGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SouthWestGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SouthWestGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SouthGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SouthGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SouthEastGravity_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SouthEastGravity", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CMYColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CMYColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CMYKColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CMYKColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GRAYColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GRAYColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HCLColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HCLColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HCLpColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HCLpColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HSBColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HSBColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HSIColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HSIColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HSLColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HSLColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HSVColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HSVColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HWBColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HWBColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LabColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LabColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LCHColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LCHColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LCHabColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LCHabColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LCHuvColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LCHuvColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LogColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LogColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LMSColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LMSColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LuvColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LuvColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OHTAColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OHTAColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_Rec601YCbCrColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Rec601YCbCrColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_Rec709YCbCrColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Rec709YCbCrColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RGBColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RGBColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_scRGBColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("scRGBColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_sRGBColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("sRGBColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TransparentColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TransparentColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_xyYColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("xyYColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_XYZColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("XYZColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YCbCrColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YCbCrColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YCCColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YCCColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YDbDrColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YDbDrColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YIQColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YIQColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YPbPrColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YPbPrColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YUVColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YUVColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LinearGRAYColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LinearGRAYColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JzazbzColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JzazbzColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DisplayP3Colorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DisplayP3Colorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_Adobe98Colorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Adobe98Colorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ProPhotoColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ProPhotoColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OklabColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OklabColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OklchColorspace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OklchColorspace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RedChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RedChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GrayChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GrayChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CyanChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CyanChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GreenChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GreenChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagentaChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagentaChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_aChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("aChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlueChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlueChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_bChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("bChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YellowChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YellowChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlackChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlackChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AlphaChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AlphaChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OpacityChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OpacityChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_IndexChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("IndexChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ReadMaskChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ReadMaskChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WriteMaskChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WriteMaskChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MetaChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MetaChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CompositeMaskChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CompositeMaskChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CompositeChannels_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CompositeChannels", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AllChannels_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AllChannels", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TrueAlphaChannel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TrueAlphaChannel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RGBChannels_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RGBChannels", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GrayChannels_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GrayChannels", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SyncChannels_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SyncChannels", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DefaultChannels_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DefaultChannels", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedPixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedPixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CharPixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CharPixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DoublePixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DoublePixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FloatPixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FloatPixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LongPixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LongPixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LongLongPixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LongLongPixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_QuantumPixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("QuantumPixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ShortPixel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ShortPixel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickMaxBufferExtent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickMaxBufferExtent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickMinBufferExtent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickMinBufferExtent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedException_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedException", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WarningException_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WarningException", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ResourceLimitWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ResourceLimitWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TypeWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TypeWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OptionWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OptionWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DelegateWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DelegateWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MissingDelegateWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MissingDelegateWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CorruptImageWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CorruptImageWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FileOpenWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FileOpenWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlobWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlobWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StreamWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StreamWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CacheWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CacheWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CoderWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CoderWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FilterWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FilterWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModuleWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModuleWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DrawWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DrawWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImageWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImageWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WandWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WandWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RandomWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RandomWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_XServerWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("XServerWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MonitorWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MonitorWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RegistryWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RegistryWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ConfigureWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ConfigureWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PolicyWarning_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PolicyWarning", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ErrorException_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ErrorException", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ResourceLimitError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ResourceLimitError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TypeError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TypeError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OptionError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OptionError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DelegateError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DelegateError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MissingDelegateError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MissingDelegateError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CorruptImageError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CorruptImageError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FileOpenError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FileOpenError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlobError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlobError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StreamError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StreamError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CacheError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CacheError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CoderError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CoderError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FilterError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FilterError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModuleError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModuleError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DrawError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DrawError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImageError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImageError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WandError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WandError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RandomError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RandomError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_XServerError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("XServerError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MonitorError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MonitorError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RegistryError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RegistryError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ConfigureError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ConfigureError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PolicyError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PolicyError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FatalErrorException_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FatalErrorException", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ResourceLimitFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ResourceLimitFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TypeFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TypeFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OptionFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OptionFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DelegateFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DelegateFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MissingDelegateFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MissingDelegateFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CorruptImageFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CorruptImageFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FileOpenFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FileOpenFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlobFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlobFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StreamFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StreamFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CacheFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CacheFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CoderFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CoderFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FilterFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FilterFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModuleFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModuleFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DrawFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DrawFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImageFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImageFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WandFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WandFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RandomFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RandomFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_XServerFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("XServerFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MonitorFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MonitorFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RegistryFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RegistryFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ConfigureFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ConfigureFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PolicyFatalError_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PolicyFatalError", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedCompliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedCompliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoCompliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoCompliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CSSCompliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CSSCompliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SVGCompliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SVGCompliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_X11Compliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("X11Compliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_XPMCompliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("XPMCompliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MVGCompliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MVGCompliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AllCompliance_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AllCompliance", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedIlluminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedIlluminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AIlluminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AIlluminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BIlluminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BIlluminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CIlluminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CIlluminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_D50Illuminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("D50Illuminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_D55Illuminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("D55Illuminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_D65Illuminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("D65Illuminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_D75Illuminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("D75Illuminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_EIlluminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("EIlluminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_F2Illuminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("F2Illuminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_F7Illuminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("F7Illuminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_F11Illuminant_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("F11Illuminant", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AlphaCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AlphaCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AtopCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AtopCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlendCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlendCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlurCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlurCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BumpmapCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BumpmapCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ChangeMaskCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ChangeMaskCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ClearCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ClearCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ColorBurnCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ColorBurnCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ColorDodgeCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ColorDodgeCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ColorizeCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ColorizeCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyBlackCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyBlackCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyBlueCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyBlueCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyCyanCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyCyanCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyGreenCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyGreenCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyMagentaCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyMagentaCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyAlphaCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyAlphaCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyRedCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyRedCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CopyYellowCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CopyYellowCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DarkenCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DarkenCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DarkenIntensityCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DarkenIntensityCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DifferenceCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DifferenceCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DisplaceCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DisplaceCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DissolveCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DissolveCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DistortCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DistortCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DivideDstCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DivideDstCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DivideSrcCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DivideSrcCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DstAtopCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DstAtopCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DstCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DstCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DstInCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DstInCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DstOutCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DstOutCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DstOverCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DstOverCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExclusionCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExclusionCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HardLightCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HardLightCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HardMixCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HardMixCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HueCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HueCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_InCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("InCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_IntensityCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("IntensityCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LightenCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LightenCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LightenIntensityCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LightenIntensityCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LinearBurnCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LinearBurnCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LinearDodgeCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LinearDodgeCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LinearLightCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LinearLightCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LuminizeCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LuminizeCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MathematicsCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MathematicsCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MinusDstCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MinusDstCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MinusSrcCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MinusSrcCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModulateCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModulateCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModulusAddCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModulusAddCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModulusSubtractCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModulusSubtractCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MultiplyCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MultiplyCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OutCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OutCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OverCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OverCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OverlayCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OverlayCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PegtopLightCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PegtopLightCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PinLightCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PinLightCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PlusCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PlusCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ReplaceCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ReplaceCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SaturateCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SaturateCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ScreenCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ScreenCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SoftLightCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SoftLightCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SrcAtopCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SrcAtopCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SrcCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SrcCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SrcInCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SrcInCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SrcOutCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SrcOutCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SrcOverCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SrcOverCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThresholdCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThresholdCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_VividLightCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("VividLightCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_XorCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("XorCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StereoCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StereoCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FreezeCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FreezeCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_InterpolateCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("InterpolateCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NegateCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NegateCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ReflectCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ReflectCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SoftBurnCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SoftBurnCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SoftDodgeCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SoftDodgeCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StampCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StampCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RMSECompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RMSECompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SaliencyBlendCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SaliencyBlendCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SeamlessBlendCompositeOp_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SeamlessBlendCompositeOp", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_B44ACompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("B44ACompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_B44Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("B44Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BZipCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BZipCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DXT1Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DXT1Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DXT3Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DXT3Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DXT5Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DXT5Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FaxCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FaxCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_Group4Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Group4Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JBIG1Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JBIG1Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JBIG2Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JBIG2Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JPEG2000Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JPEG2000Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JPEGCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JPEGCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LosslessJPEGCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LosslessJPEGCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LZMACompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LZMACompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LZWCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LZWCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PizCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PizCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_Pxr24Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Pxr24Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RLECompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RLECompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ZipCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ZipCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ZipSCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ZipSCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ZstdCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ZstdCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WebPCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WebPCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DWAACompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DWAACompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DWABCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DWABCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BC7Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BC7Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BC5Compression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BC5Compression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LERCCompression_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LERCCompression", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UnityKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UnityKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GaussianKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GaussianKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DoGKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DoGKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LoGKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LoGKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlurKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlurKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CometKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CometKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BinomialKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BinomialKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LaplacianKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LaplacianKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SobelKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SobelKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FreiChenKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FreiChenKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RobertsKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RobertsKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PrewittKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PrewittKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CompassKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CompassKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_KirschKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("KirschKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DiamondKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DiamondKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SquareKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SquareKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RectangleKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RectangleKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OctagonKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OctagonKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DiskKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DiskKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PlusKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PlusKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CrossKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CrossKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RingKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RingKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PeaksKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PeaksKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_EdgesKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("EdgesKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CornersKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CornersKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DiagonalsKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DiagonalsKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LineEndsKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LineEndsKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LineJunctionsKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LineJunctionsKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RidgesKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RidgesKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ConvexHullKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ConvexHullKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThinSEKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThinSEKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SkeletonKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SkeletonKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ChebyshevKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ChebyshevKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ManhattanKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ManhattanKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OctagonalKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OctagonalKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_EuclideanKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("EuclideanKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UserDefinedKernel_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UserDefinedKernel", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RotatePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RotatePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ShearPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ShearPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RollPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RollPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HuePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HuePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SaturationPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SaturationPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BrightnessPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BrightnessPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GammaPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GammaPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SpiffPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SpiffPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DullPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DullPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GrayscalePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GrayscalePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_QuantizePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("QuantizePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DespecklePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DespecklePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ReduceNoisePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ReduceNoisePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AddNoisePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AddNoisePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SharpenPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SharpenPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlurPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlurPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThresholdPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThresholdPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_EdgeDetectPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("EdgeDetectPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SpreadPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SpreadPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SolarizePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SolarizePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ShadePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ShadePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RaisePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RaisePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SegmentPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SegmentPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SwirlPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SwirlPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImplodePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImplodePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WavePreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WavePreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OilPaintPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OilPaintPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CharcoalDrawingPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CharcoalDrawingPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JPEGPreview_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JPEGPreview", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UnrecognizedDispose_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UnrecognizedDispose", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedDispose_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedDispose", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoneDispose_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoneDispose", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BackgroundDispose_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BackgroundDispose", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PreviousDispose_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PreviousDispose", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedEndian_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedEndian", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LSBEndian_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LSBEndian", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MSBEndian_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MSBEndian", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedQuantumAlpha_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedQuantumAlpha", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AssociatedQuantumAlpha_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AssociatedQuantumAlpha", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DisassociatedQuantumAlpha_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DisassociatedQuantumAlpha", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedQuantumFormat_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedQuantumFormat", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FloatingPointQuantumFormat_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FloatingPointQuantumFormat", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SignedQuantumFormat_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SignedQuantumFormat", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UnsignedQuantumFormat_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UnsignedQuantumFormat", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AlphaQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AlphaQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BGRAQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BGRAQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BGROQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BGROQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BGRQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BGRQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlackQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlackQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlueQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlueQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CbYCrAQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CbYCrAQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CbYCrQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CbYCrQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CbYCrYQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CbYCrYQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CMYKAQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CMYKAQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CMYKOQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CMYKOQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CMYKQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CMYKQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CyanQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CyanQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GrayAlphaQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GrayAlphaQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GrayQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GrayQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GreenQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GreenQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_IndexAlphaQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("IndexAlphaQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_IndexQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("IndexQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagentaQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagentaQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OpacityQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OpacityQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RedQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RedQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RGBAQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RGBAQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RGBOQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RGBOQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RGBPadQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RGBPadQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RGBQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RGBQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_YellowQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("YellowQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MultispectralQuantum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MultispectralQuantum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PointFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PointFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BoxFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BoxFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TriangleFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TriangleFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HermiteFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HermiteFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HannFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HannFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HammingFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HammingFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlackmanFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlackmanFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GaussianFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GaussianFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_QuadraticFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("QuadraticFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CubicFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CubicFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CatromFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CatromFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MitchellFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MitchellFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JincFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JincFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SincFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SincFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SincFastFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SincFastFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_KaiserFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("KaiserFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WelchFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WelchFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ParzenFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ParzenFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BohmanFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BohmanFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BartlettFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BartlettFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LagrangeFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LagrangeFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LanczosFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LanczosFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LanczosSharpFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LanczosSharpFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_Lanczos2Filter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Lanczos2Filter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_Lanczos2SharpFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Lanczos2SharpFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RobidouxFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RobidouxFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RobidouxSharpFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RobidouxSharpFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CosineFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CosineFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SplineFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SplineFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LanczosRadiusFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LanczosRadiusFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CubicSplineFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CubicSplineFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SentinelFilter_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SentinelFilter", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BilevelType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BilevelType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GrayscaleType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GrayscaleType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GrayscaleAlphaType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GrayscaleAlphaType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PaletteType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PaletteType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PaletteAlphaType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PaletteAlphaType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TrueColorType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TrueColorType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TrueColorAlphaType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TrueColorAlphaType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ColorSeparationType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ColorSeparationType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ColorSeparationAlphaType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ColorSeparationAlphaType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OptimizeType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OptimizeType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PaletteBilevelAlphaType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PaletteBilevelAlphaType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LineInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LineInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PlaneInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PlaneInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PartitionInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PartitionInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GIFInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GIFInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_JPEGInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("JPEGInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PNGInterlace_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PNGInterlace", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TopLeftOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TopLeftOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TopRightOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TopRightOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BottomRightOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BottomRightOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BottomLeftOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BottomLeftOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LeftTopOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LeftTopOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RightTopOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RightTopOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RightBottomOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RightBottomOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LeftBottomOrientation_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LeftBottomOrientation", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedResolution_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedResolution", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PixelsPerInchResolution_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PixelsPerInchResolution", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PixelsPerCentimeterResolution_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PixelsPerCentimeterResolution", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedTransmitType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedTransmitType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FileTransmitType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FileTransmitType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlobTransmitType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlobTransmitType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StreamTransmitType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StreamTransmitType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImageTransmitType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImageTransmitType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NormalStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NormalStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UltraCondensedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UltraCondensedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExtraCondensedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExtraCondensedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CondensedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CondensedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SemiCondensedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SemiCondensedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SemiExpandedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SemiExpandedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExpandedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExpandedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExtraExpandedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExtraExpandedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UltraExpandedStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UltraExpandedStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AnyStretch_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AnyStretch", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedStyle_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedStyle", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NormalStyle_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NormalStyle", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ItalicStyle_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ItalicStyle", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ObliqueStyle_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ObliqueStyle", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AnyStyle_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AnyStyle", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BoldStyle_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BoldStyle", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedAlign_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedAlign", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LeftAlign_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LeftAlign", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CenterAlign_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CenterAlign", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RightAlign_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RightAlign", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedDecoration_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedDecoration", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoDecoration_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoDecoration", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UnderlineDecoration_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UnderlineDecoration", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OverlineDecoration_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OverlineDecoration", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LineThroughDecoration_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LineThroughDecoration", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedDirection_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedDirection", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RightToLeftDirection_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RightToLeftDirection", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LeftToRightDirection_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LeftToRightDirection", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TopToBottomDirection_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TopToBottomDirection", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedGradient_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedGradient", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LinearGradient_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LinearGradient", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RadialGradient_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RadialGradient", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AlphaPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AlphaPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ArcPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ArcPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BezierPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BezierPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CirclePrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CirclePrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ColorPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ColorPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_EllipsePrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("EllipsePrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImagePrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImagePrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LinePrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LinePrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PathPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PathPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PointPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PointPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PolygonPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PolygonPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PolylinePrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PolylinePrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RectanglePrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RectanglePrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RoundRectanglePrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RoundRectanglePrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TextPrimitive_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TextPrimitive", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedReference_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedReference", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GradientReference_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GradientReference", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedWordBreakType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedWordBreakType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NormalWordBreakType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NormalWordBreakType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BreakWordBreakType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BreakWordBreakType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedCache_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedCache", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DiskCache_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DiskCache", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DistributedCache_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DistributedCache", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MapCache_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MapCache", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MemoryCache_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MemoryCache", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PingCache_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PingCache", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AbsoluteErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AbsoluteErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FuzzErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FuzzErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MeanAbsoluteErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MeanAbsoluteErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MeanErrorPerPixelErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MeanErrorPerPixelErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MeanSquaredErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MeanSquaredErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NormalizedCrossCorrelationErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NormalizedCrossCorrelationErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PeakAbsoluteErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PeakAbsoluteErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PeakSignalToNoiseRatioErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PeakSignalToNoiseRatioErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PerceptualHashErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PerceptualHashErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RootMeanSquaredErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RootMeanSquaredErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StructuralSimilarityErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StructuralSimilarityErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StructuralDissimilarityErrorMetric_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StructuralDissimilarityErrorMetric", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedFormatType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedFormatType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImplicitFormatType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImplicitFormatType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExplicitFormatType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExplicitFormatType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AddComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AddComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ConjugateComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ConjugateComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DivideComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DivideComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagnitudePhaseComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagnitudePhaseComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MultiplyComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MultiplyComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RealImaginaryComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RealImaginaryComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SubtractComplexOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SubtractComplexOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickLogFilename_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickLogFilename", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedEvents_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedEvents", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoEvents_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoEvents", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AccelerateEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AccelerateEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AnnotateEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AnnotateEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BlobEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BlobEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CacheEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CacheEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CoderEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CoderEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ConfigureEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ConfigureEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DeprecateEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DeprecateEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DrawEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DrawEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExceptionEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExceptionEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImageEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImageEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LocaleEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LocaleEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModuleEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModuleEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PixelEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PixelEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PolicyEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PolicyEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ResourceEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ResourceEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TraceEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TraceEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TransformEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TransformEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UserEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UserEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WandEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WandEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_X11Event_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("X11Event", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CommandEvent_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CommandEvent", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AllEvents_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AllEvents", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickPackageName_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickPackageName", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickCopyright_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickCopyright", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickLibVersion_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickLibVersion", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickLibVersionText_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickLibVersionText", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickLibAddendum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickLibAddendum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickLibInterface_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickLibInterface", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickLibMinInterface_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickLibMinInterface", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickPlatform_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickPlatform", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickppLibVersionText_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickppLibVersionText", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickppLibAddendum_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickppLibAddendum", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickppLibInterface_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickppLibInterface", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickppLibMinInterface_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickppLibMinInterface", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickGitRevision_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickGitRevision", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickReleaseDate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickReleaseDate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickAuthoritativeLicense_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickAuthoritativeLicense", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickAuthoritativeURL_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickAuthoritativeURL", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickHomeURL_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickHomeURL", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickQuantumDepth_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickQuantumDepth", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickQuantumRange_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickQuantumRange", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickHDRISupport_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickHDRISupport", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickVersion_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickVersion", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetMagickCopyright", _wrap_GetMagickCopyright,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetMagickDelegates", _wrap_GetMagickDelegates,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetMagickFeatures", _wrap_GetMagickFeatures,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetMagickLicense", _wrap_GetMagickLicense,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetMagickPackageName", _wrap_GetMagickPackageName,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetMagickReleaseDate", _wrap_GetMagickReleaseDate,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagickImageCoderModule_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickImageCoderModule", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagickImageFilterModule_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickImageFilterModule", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedCLDeviceType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedCLDeviceType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CpuCLDeviceType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CpuCLDeviceType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GpuCLDeviceType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GpuCLDeviceType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ColorspaceValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ColorspaceValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CompareValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CompareValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CompositeValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CompositeValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ConvertValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ConvertValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FormatsDiskValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FormatsDiskValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FormatsMapValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FormatsMapValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FormatsMemoryValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FormatsMemoryValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_IdentifyValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("IdentifyValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImportExportValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImportExportValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MontageValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MontageValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StreamValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StreamValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagickValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AllValidate_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AllValidate", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedPolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedPolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CoderPolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CoderPolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DelegatePolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DelegatePolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FilterPolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FilterPolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PathPolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PathPolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ResourcePolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ResourcePolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SystemPolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SystemPolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CachePolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CachePolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModulePolicyDomain_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModulePolicyDomain", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedPolicyRights_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedPolicyRights", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NoPolicyRights_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NoPolicyRights", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ReadPolicyRights_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ReadPolicyRights", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WritePolicyRights_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WritePolicyRights", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExecutePolicyRights_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExecutePolicyRights", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AllPolicyRights_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AllPolicyRights", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetPolicyValue", _wrap_GetPolicyValue,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("GetPolicyList", _wrap_GetPolicyList,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("IsRightsAuthorized", _wrap_IsRightsAuthorized,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("ListPolicyInfo", _wrap_ListPolicyInfo,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("SetMagickSecurityPolicy", _wrap_SetMagickSecurityPolicy,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("SetMagickSecurityPolicyValue", _wrap_SetMagickSecurityPolicyValue,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedRegistryType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedRegistryType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImageRegistryType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImageRegistryType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImageInfoRegistryType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImageInfoRegistryType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StringRegistryType_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StringRegistryType", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AreaResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AreaResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DiskResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DiskResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_FileResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("FileResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HeightResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HeightResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MapResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MapResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MemoryResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MemoryResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThreadResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThreadResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThrottleResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThrottleResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TimeResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TimeResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_WidthResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("WidthResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ListLengthResource_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ListLengthResource", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AbsEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AbsEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AddEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AddEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AddModulusEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AddModulusEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_AndEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("AndEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CosineEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CosineEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_DivideEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("DivideEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExponentialEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExponentialEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GaussianNoiseEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GaussianNoiseEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImpulseNoiseEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImpulseNoiseEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LaplacianNoiseEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LaplacianNoiseEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LeftShiftEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LeftShiftEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LogEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LogEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MaxEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MaxEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MeanEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MeanEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MedianEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MedianEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MinEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MinEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MultiplicativeNoiseEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MultiplicativeNoiseEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MultiplyEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MultiplyEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_OrEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("OrEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PoissonNoiseEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PoissonNoiseEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PowEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PowEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RightShiftEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RightShiftEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RootMeanSquareEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RootMeanSquareEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SetEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SetEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SineEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SineEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SubtractEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SubtractEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SumEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SumEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThresholdBlackEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThresholdBlackEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThresholdEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThresholdEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ThresholdWhiteEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ThresholdWhiteEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UniformNoiseEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UniformNoiseEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_XorEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("XorEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_InverseLogEvaluateOperator_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("InverseLogEvaluateOperator", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GradientStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GradientStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MaximumStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MaximumStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MeanStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MeanStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MedianStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MedianStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MinimumStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MinimumStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ModeStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ModeStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_NonpeakStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("NonpeakStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RootMeanSquareStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RootMeanSquareStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_StandardDeviationStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("StandardDeviationStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ContrastStatistic_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ContrastStatistic", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MagickPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RootPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RootPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_HeadPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("HeadPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_TailPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("TailPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BasePath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BasePath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ExtensionPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ExtensionPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SubimagePath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SubimagePath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_CanonicalPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("CanonicalPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_SubcanonicalPath_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("SubcanonicalPath", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_BasePathSansCompressExtension_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("BasePathSansCompressExtension", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UndefinedNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UndefinedNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_UniformNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("UniformNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_GaussianNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("GaussianNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_MultiplicativeGaussianNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MultiplicativeGaussianNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_ImpulseNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("ImpulseNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_LaplacianNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("LaplacianNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_PoissonNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("PoissonNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, MagickCore_RandomNoise_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("RandomNoise", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_MagickWandSignature_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("MagickWandSignature", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("MagickSetSecurityPolicy", _wrap_MagickSetSecurityPolicy,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(MagickCore.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("DisableOpenCL", _wrap_DisableOpenCL,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("EnableOpenCL", _wrap_EnableOpenCL,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("SetRandomSeed", _wrap_SetRandomSeed,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("SetSecurityPolicy", _wrap_SetSecurityPolicy,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_variable
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Accessor<_wrap_borderGeometryDefault_get, _wrap_borderGeometryDefault_set>("borderGeometryDefault",
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_variable
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Accessor<_wrap_frameGeometryDefault_get, _wrap_frameGeometryDefault_set>("frameGeometryDefault",
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_variable
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Accessor<_wrap_raiseGeometryDefault_get, _wrap_raiseGeometryDefault_set>("raiseGeometryDefault",
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("equal", _wrap_Magick__wrap_equal,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("notEqual", _wrap_Magick__wrap_notEqual,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("gt", _wrap_Magick__wrap_gt,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("lt", _wrap_Magick__wrap_lt,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("gte", _wrap_Magick__wrap_gte,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("lte", _wrap_Magick__wrap_lte,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_constant
do {
  Napi::Function f = Napi::Function::New(env, exports_Magick_CoderInfo_header_get);
  Napi::Value value;
  NAPI_CHECK_RESULT(f.Call(0, SWIG_NULLPTR), value);
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Value("Magick_CoderInfo_header", value,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(exports.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("coderInfoList", _wrap_Magick__wrap_coderInfoList,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("appendImagesAsync", _wrap_Magick__wrap_appendImagesAsync,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("appendImages", _wrap_Magick__wrap_appendImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("averageImages", _wrap_averageImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("flattenImages", _wrap_flattenImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("mosaicImages", _wrap_mosaicImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("coalesceImages", _wrap_coalesceImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("deconstructImages", _wrap_deconstructImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("forwardFourierTransformImageAsync", _wrap_Magick__wrap_forwardFourierTransformImageAsync,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("forwardFourierTransformImage", _wrap_Magick__wrap_forwardFourierTransformImage,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("montageImages", _wrap_montageImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("morphImages", _wrap_morphImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("readImagesAsync", _wrap_Magick__wrap_readImagesAsync,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("readImages", _wrap_Magick__wrap_readImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("writeImagesAsync", _wrap_Magick__wrap_writeImagesAsync,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);
// jsnapi_register_global_function
do {
  Napi::PropertyDescriptor pd = Napi::PropertyDescriptor::Function("writeImages", _wrap_Magick__wrap_writeImages,
    static_cast<napi_property_attributes>(napi_writable | napi_enumerable | napi_configurable));
  NAPI_CHECK_MAYBE(Magick.DefineProperty(pd));
} while (0);


  return exports;
  goto fail;
fail:
  return Napi::Object();
}

NODE_API_MODULE(magickwand, Init)
